欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GSON實(shí)現(xiàn)Java對(duì)象的JSON序列化與反序列化的實(shí)例教程

 更新時(shí)間:2016年06月22日 11:49:25   投稿:goldensun  
GSON是Google開發(fā)并開源的一個(gè)Java的JSON轉(zhuǎn)換庫(kù),這里我們將來(lái)講解GSON實(shí)現(xiàn)Java對(duì)象的JSON序列化與反序列化的實(shí)例教程,需要的朋友可以參考下

從GitHub下載GSON:https://github.com/google/gson
Gson的應(yīng)用主要為toJson與fromJson兩個(gè)轉(zhuǎn)換函數(shù),而在使用這種對(duì)象轉(zhuǎn)換之前需先創(chuàng)建好對(duì)象的類別以及其成員才能成功的將JSON字符串成功轉(zhuǎn)換成相對(duì)應(yīng)的對(duì)象。

 class Examples {
  private int answer1 = 100;
  private String answer2 = "Hello world!";
  Examples(){
  }   // default constructor
 }

序列化JAVA對(duì)象成JSON字符串

  Examples example1 = new Examples();
  Gson gson = new Gson();
  String json = gson.toJson(example1);

 json結(jié)果將是

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

反序列化JSON字符串成對(duì)應(yīng)的JAVA對(duì)象

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

==> example2即與example1相同

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


示例:

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的轉(zhuǎn)換**************************"); 
   System.out.println("將一個(gè)Bean轉(zhuǎn)換成為json字符串->"); 
   User user1 = new User("鳳姐",12,new StringBuffer("未知"),true); 
   System.out.println("轉(zhuǎn)換之前的user1"+user1); 
   String json = gson.toJson(user1); 
   System.out.println("User對(duì)象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個(gè)json字符串轉(zhuǎn)換成為Bean->"); 
   User user2 = gson.fromJson(json, User.class); 
   System.out.println("轉(zhuǎn)換成為的user2=="+user2); 
   System.out.println(); 
    
   System.out.println("2Collection集合的轉(zhuǎn)換**************************"); 
   System.out.println("將一個(gè)Bean的List集合轉(zhuǎn)換成為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集合對(duì)象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個(gè)json字符串轉(zhuǎn)換成為Bean的List集合->"); 
   Collection<User> userList2 = 
      gson.fromJson(json, 
         new TypeToken<Collection<User>>(){}.getType()); 
   System.out.println("轉(zhuǎn)換成為的User的List集合,userList2="+userList2); 
   System.out.println(); 
    
   System.out.println("3Array數(shù)組的轉(zhuǎn)換**************************"); 
   System.out.println("將一個(gè)Bean的Array數(shù)組轉(zhuǎn)換成為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的數(shù)組對(duì)象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個(gè)json字符串轉(zhuǎn)換成為Bean的數(shù)組對(duì)象->"); 
   User [] userArray2 = gson.fromJson(json, new TypeToken<User[]>(){}.getType()); 
   System.out.println("轉(zhuǎn)換成為的User的數(shù)組對(duì)象,userArray2="+Arrays.toString(userArray2)); 
   System.out.println(); 
    
   System.out.println("4Map的轉(zhuǎn)換**************************"); 
   System.out.println("將一個(gè)Bean的Map轉(zhuǎn)換成為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集合轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個(gè)json字符串轉(zhuǎn)換成為Bean的數(shù)組對(duì)象->"); 
   Map<String,User> map2 = 
      gson.fromJson(json, 
         new TypeToken<Map<String,User>>(){}.getType()); 
   System.out.println("轉(zhuǎn)換成為的User的數(shù)組對(duì)象,map2=="+map2); 
  } 
} 

運(yùn)行結(jié)果:

1普通的Bean的轉(zhuǎn)換************************** 
將一個(gè)Bean轉(zhuǎn)換成為json字符串-> 
轉(zhuǎn)換之前的user1{name=鳳姐;age=12;sex=未知;isChild=true} 
User對(duì)象轉(zhuǎn)換成為Json字符串,json==={"name":"鳳姐","age":12,"sex":"未知","isChild":true} 
*************************** 
將一個(gè)json字符串轉(zhuǎn)換成為Bean-> 
轉(zhuǎn)換成為的user2=={name=鳳姐;age=12;sex=未知;isChild=true} 
 
2Collection集合的轉(zhuǎn)換************************** 
將一個(gè)Bean的List集合轉(zhuǎn)換成為json字符串-> 
User的List集合對(duì)象轉(zhuǎn)換成為Json字符串,json===[{"name":"如花","age":10,"sex":"男","isChild":false},{"name":"如花","age":11,"sex":"男","isChild":false},{"name":"如花","age":12,"sex":"男","isChild":false}] 
*************************** 
將一個(gè)json字符串轉(zhuǎn)換成為Bean的List集合-> 
轉(zhuǎn)換成為的User的List集合,userList2=[{name=如花;age=10;sex=男;isChild=false}, {name=如花;age=11;sex=男;isChild=false}, {name=如花;age=12;sex=男;isChild=false}] 
 
3Array數(shù)組的轉(zhuǎn)換************************** 
將一個(gè)Bean的Array數(shù)組轉(zhuǎn)換成為json字符串-> 
User的數(shù)組對(duì)象轉(zhuǎn)換成為Json字符串,json===[{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}] 
*************************** 
將一個(gè)json字符串轉(zhuǎn)換成為Bean的數(shù)組對(duì)象-> 
轉(zhuǎn)換成為的User的數(shù)組對(duì)象,userArray2=[{name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}] 
 
4Map的轉(zhuǎn)換************************** 
將一個(gè)Bean的Map轉(zhuǎn)換成為json字符串-> 
User的Map集合轉(zhuǎn)換成為Json字符串,json==={"10":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"11":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"12":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}} 
*************************** 
將一個(gè)json字符串轉(zhuǎn)換成為Bean的數(shù)組對(duì)象-> 
轉(zhuǎn)換成為的User的數(shù)組對(duì)象,map2=={10={name=芙蓉;age=20;sex=人妖;isChild=true}, 11={name=芙蓉;age=20;sex=人妖;isChild=true}, 12={name=芙蓉;age=20;sex=人妖;isChild=true}} 

相關(guān)文章

  • Spring Boot獲取微信用戶信息的超簡(jiǎn)單方法

    Spring Boot獲取微信用戶信息的超簡(jiǎn)單方法

    這篇文章主要給大家介紹了關(guān)于Spring Boot獲取微信用戶信息的超簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • mybatis實(shí)現(xiàn)圖書管理系統(tǒng)

    mybatis實(shí)現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了mybatis實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 使用maven工具解決jar包沖突或重復(fù)加載的問(wèn)題

    使用maven工具解決jar包沖突或重復(fù)加載的問(wèn)題

    這篇文章主要介紹了使用maven工具解決jar包沖突或重復(fù)加載的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化的實(shí)例詳解

    Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化的實(shí)例詳解

    Spring Boot Admin2 自帶有部分監(jiān)控圖表,如圖,有線程、內(nèi)存Heap和內(nèi)存Non Heap,這篇文章主要介紹了Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化,需要的朋友可以參考下
    2022-11-11
  • Java 高并發(fā)十: JDK8對(duì)并發(fā)的新支持詳解

    Java 高并發(fā)十: JDK8對(duì)并發(fā)的新支持詳解

    本文主要介紹Java 高并發(fā)JDK8的支持,這里整理了詳細(xì)的資料及1. LongAdder 2. CompletableFuture 3. StampedLock的介紹,有興趣的小伙伴可以參考下
    2016-09-09
  • JavaWeb實(shí)現(xiàn)簡(jiǎn)單查詢商品功能

    JavaWeb實(shí)現(xiàn)簡(jiǎn)單查詢商品功能

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)簡(jiǎn)單查詢商品功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • SpringBoot的自定義banner使用方法

    SpringBoot的自定義banner使用方法

    這篇文章主要介紹了SpringBoot的自定義banner使用方法,在Spring Boot中,你可以通過(guò)定制Banner來(lái)個(gè)性化你的應(yīng)用程序啟動(dòng)時(shí)的輸出,Banner是一個(gè)在應(yīng)用程序啟動(dòng)時(shí)顯示的ASCII藝術(shù)字形式的標(biāo)志,用于增加應(yīng)用程序的識(shí)別度和個(gè)性化,需要的朋友可以參考下
    2024-01-01
  • Java 重寫時(shí)應(yīng)當(dāng)遵守的 11 條規(guī)則

    Java 重寫時(shí)應(yīng)當(dāng)遵守的 11 條規(guī)則

    這篇文章主要介紹了Java 重寫時(shí)應(yīng)當(dāng)遵守的 11 條規(guī)則,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • jdbc連接oracle數(shù)據(jù)庫(kù)功能示例

    jdbc連接oracle數(shù)據(jù)庫(kù)功能示例

    這篇文章主要介紹了jdbc連接oracle數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式詳細(xì)分析了java基于jdbc連接Oracle數(shù)據(jù)庫(kù)的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-01-01
  • Java之獲取客戶端真實(shí)IP地址的實(shí)現(xiàn)

    Java之獲取客戶端真實(shí)IP地址的實(shí)現(xiàn)

    在開發(fā)工作中,我們常常需要獲取客戶端的IP,本文主要介紹了Jav之獲取客戶端真實(shí)IP地址的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12

最新評(píng)論