国产探花免费观看_亚洲丰满少妇自慰呻吟_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]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岚皋县| 巴林右旗| 固安县| 大关县| 房产| 丹巴县| 金塔县| 建平县| 手游| 西乡县| 舟山市| 平潭县| 奎屯市| 承德县| 济源市| 华容县| 乐昌市| 合肥市| 成安县| 大渡口区| 高安市| 彰化市| 临沂市| 台东市| 东安县| 腾冲县| 青川县| 岳阳市| 清镇市| 盐城市| 定远县| 克山县| 望都县| 宜兰县| 永胜县| 壶关县| 龙山县| 那坡县| 天津市| 炉霍县| 广水市|