最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

序列化JAVA對象成JSON字符串

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

 json結(jié)果將是

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

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

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

==> example2即與example1相同

對象example1通過toJson序列化成JSON字符串傳遞,再宣告一個對象example2為接收了JSON后通過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("將一個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對象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個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("將一個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集合對象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個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("將一個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ù)組對象轉(zhuǎn)換成為Json字符串,json==="+json); 
    
   System.out.println("***************************"); 
   System.out.println("將一個json字符串轉(zhuǎn)換成為Bean的數(shù)組對象->"); 
   User [] userArray2 = gson.fromJson(json, new TypeToken<User[]>(){}.getType()); 
   System.out.println("轉(zhuǎn)換成為的User的數(shù)組對象,userArray2="+Arrays.toString(userArray2)); 
   System.out.println(); 
    
   System.out.println("4Map的轉(zhuǎn)換**************************"); 
   System.out.println("將一個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("將一個json字符串轉(zhuǎn)換成為Bean的數(shù)組對象->"); 
   Map<String,User> map2 = 
      gson.fromJson(json, 
         new TypeToken<Map<String,User>>(){}.getType()); 
   System.out.println("轉(zhuǎn)換成為的User的數(shù)組對象,map2=="+map2); 
  } 
} 

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

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

相關(guān)文章

  • Java使用TarsosDSP庫實現(xiàn)音頻的處理和格式轉(zhuǎn)換

    Java使用TarsosDSP庫實現(xiàn)音頻的處理和格式轉(zhuǎn)換

    在音頻處理領(lǐng)域,Java雖然有原生的音頻處理類庫,但其功能相對基礎(chǔ),而TarsosDSP是一個強(qiáng)大的開源音頻處理庫,提供了豐富的功能,本文將介紹如何在Java中結(jié)合使用TarsosDSP庫,來實現(xiàn)音頻的處理和格式轉(zhuǎn)換,需要的朋友可以參考下
    2025-04-04
  • Java中常用數(shù)據(jù)類型的輸入輸出詳解

    Java中常用數(shù)據(jù)類型的輸入輸出詳解

    本文主要介紹了Java中幾個常用的數(shù)據(jù)類型是如何輸入和輸出的,例如:Char型、int型、double型、數(shù)組、字符串等,對我們學(xué)習(xí)java有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2021-12-12
  • 詳解Java如何簡化條件表達(dá)式

    詳解Java如何簡化條件表達(dá)式

    在復(fù)雜的實際業(yè)務(wù)中,往往會出現(xiàn)各種嵌套的條件判斷邏輯。隨著需求的增加,條件邏輯會變得越來越復(fù)雜。面對這種情況,簡化判斷邏輯就是不得不做的事情,下面為大家介紹幾種方法
    2022-06-06
  • mybatis如何處理返回結(jié)果集

    mybatis如何處理返回結(jié)果集

    這篇文章主要介紹了mybatis如何處理返回結(jié)果集問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • maven升級版本后報錯:Blocked mirror for repositories

    maven升級版本后報錯:Blocked mirror for repositories

    本文主要介紹了maven升級版本后報錯:Blocked mirror for repositories,文中的解決方法非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Spring Security基于過濾器實現(xiàn)圖形驗證碼功能

    Spring Security基于過濾器實現(xiàn)圖形驗證碼功能

    驗證碼就是為了防止惡意用戶采用暴力重試的攻擊手段而設(shè)置的一種防護(hù)措施,接下來在Spring Security的環(huán)境中,我們可以用兩種方案實現(xiàn)圖形驗證碼,具體實現(xiàn)方法跟隨小編一起看看吧
    2021-09-09
  • 淺談spring boot 1.5.4 異??刂? src=

    淺談spring boot 1.5.4 異常控制

    下面小編就為大家?guī)硪黄獪\談spring boot 1.5.4 異??刂?。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 自從在 IDEA 中用了熱部署神器 JRebel 之后,開發(fā)效率提升了 10(真棒)

    自從在 IDEA 中用了熱部署神器 JRebel 之后,開發(fā)效率提升了 10(真棒)

    在javaweb開發(fā)過程中,使用熱部署神器 JRebel可以使class類還是更新spring配置文件都能立馬見到效率,本文給大家介紹JRebel的兩種安裝方法,小編建議使用第二種方法,具體安裝步驟跟隨小編一起看看吧
    2021-06-06
  • 淺談Mybatis獲取參數(shù)值的方式

    淺談Mybatis獲取參數(shù)值的方式

    本文主要介紹了Mybatis獲取參數(shù)值的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • java中instanceof與Class的等價性代碼示例

    java中instanceof與Class的等價性代碼示例

    這篇文章主要介紹了java中instanceof與Class的等價性代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

绥芬河市| 小金县| 恩施市| 浙江省| 布拖县| 板桥市| 大同市| 库尔勒市| 铜山县| 衡山县| 兴安县| 凤凰县| 大冶市| 郧西县| 光泽县| 太保市| 大厂| 湖北省| 广丰县| 岑溪市| 紫金县| 沧州市| 卓资县| 吐鲁番市| 密云县| 齐齐哈尔市| 雅江县| 高淳县| 墨竹工卡县| 山丹县| 兖州市| 泾川县| 上饶市| 惠来县| 房山区| 明光市| 德江县| 图们市| 兴业县| 曲靖市| 大荔县|