Maison > Java > javaDidacticiel > le corps du texte

Tutoriel GSON pour implémenter la sérialisation et la désérialisation JSON des objets Java

高洛峰
Libérer: 2017-01-18 09:05:48
original
1574 Les gens l'ont consulté

Téléchargez GSON depuis GitHub : https://github.com/google/gson
L'application de Gson est principalement composée de deux fonctions de conversion : toJson et fromJson. Avant d'utiliser ce type de conversion d'objet, vous devez créer l'objet. catégorie en premier. Et ses membres peuvent convertir avec succès la chaîne JSON en l’objet correspondant.

class Examples {
 private int answer1 = 100;
 private String answer2 = "Hello world!";
 Examples(){
 }   // default constructor
}
Copier après la connexion

Sérialiser l'objet JAVA en chaîne JSON

Examples example1 = new Examples();
Gson gson = new Gson();
String json = gson.toJson(example1);
Copier après la connexion

le résultat json sera

{"answer1":100,"answer2":"Hello world!"}
Copier après la connexion

Désérialiser la chaîne JSON en objet JAVA correspondant

Examples example2= gson.fromJson(json,Examples.class);
Copier après la connexion

==> l'exemple 2 est le même que l'exemple 1

exemple d'objet 1 Sérialisez-le en JSON chaîne et transmettez-la via toJson, puis déclarez un objet exemple2 comme recevant JSON et le désérialisant en exemple2 via fromJson, donc exemple1 est le même que exemple2


Exemple :

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);
  }
}
Copier après la connexion

Résultat d'exécution :

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}}
Copier après la connexion

Plus de GSON implémente la sérialisation et la désérialisation JSON des objets Java Veuillez faire attention sur le site Web PHP chinois pour des articles connexes sur des tutoriels pratiques !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal