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

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

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

服務器之家 - 編程語言 - JAVA教程 - GSON實現Java對象的JSON序列化與反序列化的實例教程

GSON實現Java對象的JSON序列化與反序列化的實例教程

2020-05-20 11:41goldensun JAVA教程

GSON是Google開發并開源的一個Java的JSON轉換庫,這里我們將來講解GSON實現Java對象的JSON序列化與反序列化的實例教程,需要的朋友可以參考下

從GitHub下載GSON:https://github.com/google/gson
Gson的應用主要為toJson與fromJson兩個轉換函數,而在使用這種對象轉換之前需先創建好對象的類別以及其成員才能成功的將JSON字符串成功轉換成相對應的對象。

?
1
2
3
4
5
6
class Examples {
 private int answer1 = 100;
 private String answer2 = "Hello world!";
 Examples(){
 }   // default constructor
}

序列化JAVA對象成JSON字符串

?
1
2
3
Examples example1 = new Examples();
Gson gson = new Gson();
String json = gson.toJson(example1);

 json結果將是

?
1
{"answer1":100,"answer2":"Hello world!"}

反序列化JSON字符串成對應的JAVA對象

?
1
Examples example2= gson.fromJson(json,Examples.class);

==> example2即與example1相同

對象example1通過toJson序列化成JSON字符串傳遞,再宣告一個對象example2為接收了JSON后通過fromJson反序列化成example2,故example1與example2相同


示例:

?
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
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
  
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
  
class User{
  public User(String name,int age,StringBuffer sex,boolean isChild){
   this.name = name;
   this.age = age;
   this.sex = sex;
   this.isChild = isChild;
  }
  private String name;
  private int age;
  private StringBuffer sex;
  private boolean isChild;
  public String toString(){
   return "{name="+name+";age="+age+";sex="+sex+";isChild="+isChild+"}";
  }
  public int hashCode(){
   return name.hashCode()*100+age;
  }
}
  
public class GsonTest {
  public static void main(String[] args) {
   Gson gson = new Gson();
    
   System.out.println("1普通的Bean的轉換**************************");
   System.out.println("將一個Bean轉換成為json字符串->");
   User user1 = new User("鳳姐",12,new StringBuffer("未知"),true);
   System.out.println("轉換之前的user1"+user1);
   String json = gson.toJson(user1);
   System.out.println("User對象轉換成為Json字符串,json==="+json);
    
   System.out.println("***************************");
   System.out.println("將一個json字符串轉換成為Bean->");
   User user2 = gson.fromJson(json, User.class);
   System.out.println("轉換成為的user2=="+user2);
   System.out.println();
    
   System.out.println("2Collection集合的轉換**************************");
   System.out.println("將一個Bean的List集合轉換成為json字符串->");
   Collection<User> userList1 = new ArrayList<User>();
   for(int i=0;i<3;i++){
    User user = new User("如花",10+i,new StringBuffer("男"),false);
    userList1.add(user);
   }
   json = gson.toJson(userList1);
   System.out.println("User的List集合對象轉換成為Json字符串,json==="+json);
    
   System.out.println("***************************");
   System.out.println("將一個json字符串轉換成為Bean的List集合->");
   Collection<User> userList2 =
      gson.fromJson(json,
         new TypeToken<Collection<User>>(){}.getType());
   System.out.println("轉換成為的User的List集合,userList2="+userList2);
   System.out.println();
    
   System.out.println("3Array數組的轉換**************************");
   System.out.println("將一個Bean的Array數組轉換成為json字符串->");
   User [] userArray1 = new User[3];
   for(int i=0;i<userArray1.length;i++){
    userArray1[i] = new User("芙蓉",20,new StringBuffer("人妖"),true);
   }
   json = gson.toJson(userArray1);
   System.out.println("User的數組對象轉換成為Json字符串,json==="+json);
    
   System.out.println("***************************");
   System.out.println("將一個json字符串轉換成為Bean的數組對象->");
   User [] userArray2 = gson.fromJson(json, new TypeToken<User[]>(){}.getType());
   System.out.println("轉換成為的User的數組對象,userArray2="+Arrays.toString(userArray2));
   System.out.println();
    
   System.out.println("4Map的轉換**************************");
   System.out.println("將一個Bean的Map轉換成為json字符串->");
   Map<String,User> map1 = new HashMap<String,User>();
   for(int i=0;i<3;i++){
    map1.put(""+(i+10), userArray1[i]);
   }
   json = gson.toJson(map1);
   System.out.println("User的Map集合轉換成為Json字符串,json==="+json);
    
   System.out.println("***************************");
   System.out.println("將一個json字符串轉換成為Bean的數組對象->");
   Map<String,User> map2 =
      gson.fromJson(json,
         new TypeToken<Map<String,User>>(){}.getType());
   System.out.println("轉換成為的User的數組對象,map2=="+map2);
  }
}

運行結果:

?
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
1普通的Bean的轉換**************************
將一個Bean轉換成為json字符串->
轉換之前的user1{name=鳳姐;age=12;sex=未知;isChild=true}
User對象轉換成為Json字符串,json==={"name":"鳳姐","age":12,"sex":"未知","isChild":true}
***************************
將一個json字符串轉換成為Bean->
轉換成為的user2=={name=鳳姐;age=12;sex=未知;isChild=true}
 
2Collection集合的轉換**************************
將一個Bean的List集合轉換成為json字符串->
User的List集合對象轉換成為Json字符串,json===[{"name":"如花","age":10,"sex":"男","isChild":false},{"name":"如花","age":11,"sex":"男","isChild":false},{"name":"如花","age":12,"sex":"男","isChild":false}]
***************************
將一個json字符串轉換成為Bean的List集合->
轉換成為的User的List集合,userList2=[{name=如花;age=10;sex=男;isChild=false}, {name=如花;age=11;sex=男;isChild=false}, {name=如花;age=12;sex=男;isChild=false}]
 
3Array數組的轉換**************************
將一個Bean的Array數組轉換成為json字符串->
User的數組對象轉換成為Json字符串,json===[{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}]
***************************
將一個json字符串轉換成為Bean的數組對象->
轉換成為的User的數組對象,userArray2=[{name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}]
 
4Map的轉換**************************
將一個Bean的Map轉換成為json字符串->
User的Map集合轉換成為Json字符串,json==={"10":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"11":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"12":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}}
***************************
將一個json字符串轉換成為Bean的數組對象->
轉換成為的User的數組對象,map2=={10={name=芙蓉;age=20;sex=人妖;isChild=true}, 11={name=芙蓉;age=20;sex=人妖;isChild=true}, 12={name=芙蓉;age=20;sex=人妖;isChild=true}}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天澡夜夜澡狠狠澡 | 性做久久久久久久久浪潮 | 国产精品自在线 | 国产成人性色视频 | 1717国产精品视频免费 | 国产精品青青青高清在线密亚 | 久久国产加勒比精品无码 | 姐姐不~不可以动漫在线观看 | 114毛片免费观看网站 | 韩国漂亮美女三级在线观看 | 99视频精品免费99在线 | 日本三级免费观看 | 久见久热 这里只有精品 | 美味情缘韩国在线观看视频 | 黄漫在线播放 | 免费超级乱淫播放手机版 | 国色天香社区在线视频免费观看 | 69热精品视频在线看影院 | 亚洲熟区 | 非洲黑人又大粗gay 非洲黑人bbwbbwbbw | 国语自产拍在线播放不卡 | 摸逼网 | 国产精品xxxav免费视频 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 天美影视传媒mv直接看 | 操老妇| 国产在线乱子伦一区二区 | 丝袜护士强制脚足取精 | 日韩一区二区三区四区不卡 | 国产suv精品 | 国产精品中文字幕 | 久久免费特黄毛片 | ssni-497新任美脚女教师 | 美女撒尿无遮挡免费中国 | 女张腿男人桶羞羞漫画 | 亚洲欧美在线免费观看 | 二区免费视频 | 国产农村一级特黄α真人毛片 | 国产成人精品一区二三区在线观看 | 国产伦精品一区二区三区免费观看 | 性色香蕉AV久久久天天网 |