一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 解析Java的Jackson庫中對象的序列化與數據泛型綁定

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

2020-03-21 15:23goldensun JAVA教程

這篇文章主要介紹了解析Java的Jackson庫中對象的序列化與數據泛型綁定,Jackson通常被用來實現Java對象和JSON數據的相互轉換功能,需要的朋友可以參考下

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

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

文件: JacksonTester.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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

驗證輸出

 

?
1
2
3
4
Student [ name: Mahesh, age: 10 ]
Mahesh Kumar
false
[1, 2, 3]

 

延伸 · 閱讀

精彩推薦
  • JAVA教程java的jdbc簡單封裝方法

    java的jdbc簡單封裝方法

    本篇文章是對java的jdbc簡單封裝方法進行了詳細的分析介紹,需要的朋友參考下 ...

    internet20132342019-12-29
  • JAVA教程Java中的2種集合排序方法介紹

    Java中的2種集合排序方法介紹

    這篇文章主要介紹了Java中的2種集合排序方法介紹,本文直接給出代碼,相關說明請看代碼中的注釋,需要的朋友可以參考下 ...

    shijiebei20091602019-12-01
  • JAVA教程spring快速入門實例教程

    spring快速入門實例教程

    這篇文章主要介紹了spring快速入門實例,主要分析了spring的基本配置與控制反轉,對于spring的學習具有一定的參考借鑒價值,需要的朋友可以參考下 ...

    shichen20143832019-12-07
  • JAVA教程java利用mybatis攔截器統計sql執行時間示例

    java利用mybatis攔截器統計sql執行時間示例

    這篇文章主要介紹了java利用mybatis攔截器統計sql執行時間示例,該攔截器攔截mybatis的query和update操作,能統計sql執行時間 ...

    java教程網1882019-11-15
  • JAVA教程Java進階教程之運行時類型識別RTTI機制

    Java進階教程之運行時類型識別RTTI機制

    這篇文章主要介紹了Java進階教程之運行時類型識別RTTI機制,在Java運行時,RTTI維護類的相關信息,比如多態(polymorphism)就是基于RTTI實現的,需要的朋友可以參考...

    junjie1242019-11-27
  • JAVA教程詳解java中的synchronized關鍵字

    詳解java中的synchronized關鍵字

    這篇文章主要介紹了java中的synchronized關鍵字,可用來給對象和方法或者代碼塊加鎖,當它鎖定一個方法或者一個代碼塊的時候,同一時刻最多只有一個線程...

    Gang.Wang4292020-03-06
  • JAVA教程Java基礎教程之類型轉換與多態

    Java基礎教程之類型轉換與多態

    這篇文章主要介紹了Java基礎教程之類型轉換與多態,本文講解了 基本類型轉換、 upcast與多態、 Object類等內容,需要的朋友可以參考下 ...

    Vamei4472019-11-27
  • JAVA教程Java實現動態代理

    Java實現動態代理

    本文給大家介紹的是java使用動態代理類實現動態代理的方法和示例,這里推薦給大家,有需要的小伙伴參考下吧 ...

    hebedich2552019-12-10
主站蜘蛛池模板: 免费观看一级一片 | 成人午夜剧场 | 奇米影视888四色首页 | 青青草99久久精品国产综合 | 男人摸女人下面 | 啊好爽视频 | 欧美va在线观看 | 日本男男漫画 | 九色PORNY真实丨国产大胸 | 26uuu成人人网图片 | 成人啪啪漫画全文阅读 | aaaa黄| 免费一区视频 | 精品久久一 | 女教师被学生糟蹋三天 | 免费老外的毛片清高 | 免费观看二十女人一摸是水 | julia ann一hd| gogort人体的最新网站 | 国产自拍偷拍自拍 | 亚洲精品视频在线 | 美琪美腿白丝交小说 | 国内精品久久久久久久久 | 亚洲热图 | 无耻之徒第十一季在线观看 | 脱jk裙的美女露小内内无遮挡 | 亚洲国产精品一区二区首页 | 亚洲看片lutube在线入口 | 114毛片免费观看网站 | 国产乱码一卡二卡3卡四卡 国产乱插 | 美女被躁爽死 | 成人在线免费看 | 国产在线视频在线观看 | 天堂在线中文无弹窗全文阅读 | 亚洲精品国产成人中文 | 99久久精品在免费线18 | 欧美又大又粗又长又硬 | 四虎成人www国产精品 | 青青草成人在线观看 | 无罩看奶禁18 | 日本又大又硬又粗的视频 |