国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 兴城市| 永平县| 台中县| 鸡西市| 洪雅县| 山丹县| 醴陵市| 顺义区| 平塘县| 彩票| 普兰店市| 遂昌县| 濉溪县| 务川| 安康市| 六盘水市| 夏邑县| 河津市| 保定市| 凤冈县| 夏邑县| 东乡族自治县| 太仓市| 镇原县| 黄石市| 涟水县| 从化市| 雅安市| 鄯善县| 陇西县| 阿图什市| 嘉禾县| 东光县| 吉林市| 伊金霍洛旗| 隆德县| 启东市| 松滋市| 红河县| 仲巴县| 湛江市|