国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

實例解析Java的Jackson庫中的數(shù)據(jù)綁定

2019-11-26 14:41:05
字體:
供稿:網(wǎng)友

數(shù)據(jù)綁定API用于JSON轉(zhuǎn)換和使用屬性訪問或使用注解POJO(普通Java對象)。以下是它的兩個類型。

簡單數(shù)據(jù)綁定 - 轉(zhuǎn)換JSON,從Java Maps, Lists, Strings, Numbers, Booleans 和 null 對象。

完整數(shù)據(jù)綁定 - 轉(zhuǎn)換JSON到任何JAVA類型。我們將在下一章分別綁定。

ObjectMapper讀/寫JSON兩種類型的數(shù)據(jù)綁定。數(shù)據(jù)綁定是最方便的方式是類似XML的JAXB解析器。

簡單的數(shù)據(jù)綁定
簡單的數(shù)據(jù)綁定是指JSON映射到Java核心數(shù)據(jù)類型。下表列出了JSON類型和Java類型之間的關(guān)系。

2016113113244100.png (629×269)

讓我們來看看簡單的數(shù)據(jù)操作綁定。在這里,我們將映射JAVA基本類型直接JSON,反之亦然。

創(chuàng)建一個名為JacksonTester在Java類文件在目錄 C:/>Jackson_WORKSPACE.

File: JacksonTester.java

import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;public class JacksonTester {  public static void main(String args[]){   JacksonTester tester = new JacksonTester();     try {      ObjectMapper mapper = new ObjectMapper();      Map<String,Object> studentDataMap = new HashMap<String,Object>();       int[] marks = {1,2,3};      Student student = new Student();      student.setAge(10);      student.setName("Mahesh");      // JAVA Object      studentDataMap.put("student", student);      // JAVA String      studentDataMap.put("name", "Mahesh Kumar");         // JAVA Boolean      studentDataMap.put("verified", Boolean.FALSE);      // Array      studentDataMap.put("marks", marks);      mapper.writeValue(new File("student.json"), studentDataMap);      //result student.json  //{       //  "student":{"name":"Mahesh","age":10},      //  "marks":[1,2,3],      //  "verified":false,      //  "name":"Mahesh Kumar"      //}      studentDataMap = mapper.readValue(new File("student.json"), Map.class);      System.out.println(studentDataMap.get("student"));      System.out.println(studentDataMap.get("name"));      System.out.println(studentDataMap.get("verified"));      System.out.println(studentDataMap.get("marks"));   } catch (JsonParseException e) {     e.printStackTrace();   } catch (JsonMappingException e) {     e.printStackTrace();   } catch (IOException e) {      e.printStackTrace();   }  }}class Student {  private String name;  private int age;  public Student(){}  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }  public String toString(){   return "Student [ name: "+name+", age: "+ age+ " ]";  } }

驗證結(jié)果

使用javac編譯如下類:

復制代碼 代碼如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

現(xiàn)在運行jacksonTester看到的結(jié)果:
復制代碼 代碼如下:

C:/Jackson_WORKSPACE>java JacksonTester

驗證輸出結(jié)果

{name=Mahesh, age=10}Mahesh Kumarfalse[1, 2, 3]

全數(shù)據(jù)綁定
完全數(shù)據(jù)綁定是指JSON映射到任何Java對象。

//Create an ObjectMapper instanceObjectMapper mapper = new ObjectMapper(); //map JSON content to Student objectStudent student = mapper.readValue(new File("student.json"), Student.class);//map Student object to JSON contentmapper.writeValue(new File("student.json"), student);

讓我們來看看簡單的數(shù)據(jù)操作綁定。在這里,我們將直接映射Java對象到JSON,反之亦然。

創(chuàng)建一個名為JacksonTester在Java類文件目錄 C:/>Jackson_WORKSPACE.

File: JacksonTester.java

import java.io.File;import java.io.IOException;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;public class JacksonTester {  public static void main(String args[]){   JacksonTester tester = new JacksonTester();   try {     Student student = new Student();     student.setAge(10);     student.setName("Mahesh");     tester.writeJSON(student);     Student student1 = tester.readJSON();     System.out.println(student1);   } catch (JsonParseException e) {     e.printStackTrace();   } catch (JsonMappingException e) {     e.printStackTrace();   } catch (IOException e) {     e.printStackTrace();   }  }  private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{   ObjectMapper mapper = new ObjectMapper();    mapper.writeValue(new File("student.json"), student);  }  private Student readJSON() throws JsonParseException, JsonMappingException, IOException{   ObjectMapper mapper = new ObjectMapper();   Student student = mapper.readValue(new File("student.json"), Student.class);   return student;  }}class Student {  private String name;  private int age;  public Student(){}  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }  public String toString(){   return "Student [ name: "+name+", age: "+ age+ " ]";  } }

驗證結(jié)果

使用javac編譯如下類:

復制代碼 代碼如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

現(xiàn)在運行jacksonTester看到的結(jié)果:
復制代碼 代碼如下:

C:/Jackson_WORKSPACE>java JacksonTester

驗證輸出
復制代碼 代碼如下:

Student [ name: Mahesh, age: 10 ]

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆云县| 佛学| 利辛县| 盐亭县| 安平县| 于田县| 清河县| 尼勒克县| 开阳县| 商南县| 无锡市| 南宁市| 崇左市| 江陵县| 奉新县| 哈尔滨市| 伊春市| 阿坝| 龙山县| 上高县| 凤庆县| 凤阳县| 桃江县| 股票| 浦北县| 大名县| 饶河县| 井冈山市| 康定县| 固原市| 贵德县| 甘谷县| 疏勒县| 安阳市| 万盛区| 古浪县| 石嘴山市| 龙江县| 山东省| 曲阜市| 宁蒗|