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

首頁 > 編程 > Java > 正文

解析Java的Jackson庫中對象的序列化與數據泛型綁定

2019-11-26 14:41:05
字體:
來源:轉載
供稿:網友

Jackson對象序列化
這里將介紹將Java對象序列化到一個JSON文件,然后再讀取JSON文件獲取轉換為對象。在這個例子中,創建了Student類。創建將有學生對象以JSON表示在一個student.json文件。

創建一個名為JacksonTester在Java類文件在 C:/>Jackson_WORKSPACE.

文件: 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+ " ]";  } }

驗證結果

使用 javac 編譯如下類:

復制代碼 代碼如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

現在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:/Jackson_WORKSPACE>java JacksonTester

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

Student [ name: Mahesh, age: 10 ]

Jackson數據綁定泛型
在簡單的數據綁定中,我們使用String作為關鍵對象,并作為一個值對象映射類。相反,我們可以使用具體的Java對象和類型強制轉換到JSON使用。

考慮下面的例子使用一個類的UserData來保存用戶專用數據。

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

文件名: JacksonTester.java

import java.io.File;import java.io.IOException;import java.util.Arrays;import java.util.HashMap;import java.util.List;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;import org.codehaus.jackson.type.TypeReference;public class JacksonTester {  public static void main(String args[]){   JacksonTester tester = new JacksonTester();     try {      ObjectMapper mapper = new ObjectMapper();      Map userDataMap = new HashMap();      UserData studentData = new UserData();       int[] marks = {1,2,3};      Student student = new Student();      student.setAge(10);      student.setName("Mahesh");      // JAVA Object      studentData.setStudent(student);      // JAVA String      studentData.setName("Mahesh Kumar");      // JAVA Boolean      studentData.setVerified(Boolean.FALSE);      // Array      studentData.setMarks(marks);      TypeReference ref = new TypeReference>() { };      userDataMap.put("studentData1", studentData);      mapper.writeValue(new File("student.json"), userDataMap);      //{      //  "studentData1":      // {      // "student":      // {      //  "name":"Mahesh",      //  "age":10      //   },      //   "name":"Mahesh Kumar",      //   "verified":false,      //   "marks":[1,2,3]      //  }      //}      userDataMap = mapper.readValue(new File("student.json"), ref);      System.out.println(userDataMap.get("studentData1").getStudent());      System.out.println(userDataMap.get("studentData1").getName());      System.out.println(userDataMap.get("studentData1").getVerified());      System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks()));   } 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+ " ]";  } }class UserData {  private Student student;  private String name;  private Boolean verified;  private int[] marks;  public UserData(){}  public Student getStudent() {   return student;  }  public void setStudent(Student student) {   this.student = student;  }  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public Boolean getVerified() {   return verified;  }  public void setVerified(Boolean verified) {   this.verified = verified;  }  public int[] getMarks() {   return marks;  }  public void setMarks(int[] marks) {   this.marks = marks;  } }

驗證輸出

使用javac編譯如下類:

復制代碼 代碼如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

現在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:/Jackson_WORKSPACE>java JacksonTester

驗證輸出

Student [ name: Mahesh, age: 10 ]Mahesh Kumarfalse[1, 2, 3]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古蔺县| 阜南县| 万山特区| 那曲县| 龙门县| 上高县| 浦县| 石嘴山市| 富源县| 鹤山市| 大悟县| 磐安县| 乌恰县| 个旧市| 新沂市| 周至县| 西丰县| 吴堡县| 永新县| 沧州市| 武宣县| 河东区| 五莲县| 沙湾县| 荣成市| 柳州市| 庆安县| 阳江市| 楚雄市| 都江堰市| 周至县| 岳普湖县| 玛多县| 会宁县| 密云县| 辛集市| 隆回县| 浦东新区| 西充县| 河东区| 来安县|