预览上一句操作、导入依赖关系2、JavaBean2.1、user.java2.2、Job.java 3、Java对象序列化和反序列化4、Aarray、List序列化和反序列化5、Map、set coco
前言
GSON弥补了JSON的诸多不足,实用上适用于Java开发。 本节介绍如何使用GSON处理java对象和json数据之间的交互。 这还包括常用对象序列化和反序列化的知识。
参照报道
33559 www.Jian Shu.com/p/75 a 50 aa0cad1
33559 www.yii Bai.com/gson/gson _ overview.html
操作1、部署为implementation ' com.Google.code.gson : gson :2.8.6 ' 2、JavaBean 2.1、user.Javapackagecom.enjoy . import com.Google.gson.annotations.serialized name; 公共类用户{ @ exposeprivatestringusername; @ expose私有字符串密码; @Expose private int age; @Expose private boolean isStudent; @Expose private Job job; //serialize :是否参加序列化,deserialize是否参加序列化@ expose (序列化=false,序列化=false )私有ize 隐私传输测试2; @expose//class不能是字段名@serializedname('class ' ) private int cls; 公共用户(string username,String password,int age,boolean isStudent ) { this.userName=userName; this.password=password; this.age=age; this.isStudent=isStudent; }publicvoidsettest1(inttest1) { this.test1=test1; }publicvoidsettest2(inttest2) { this.test2=test2; }publicvoidsetcls(intcls ) { this.cls=cls; }公共字符串getusername (() { return userName; }公共字符串获取密码() { return password; } public int getAge () { return age; }公共布尔is student () { return isStudent; }公共作业get job () { return job; }publicvoidsetjob(jobjob ) { this.job=job; } @Override public String toString () return ' user (' username=' ' username '' ',password='' password '' ' ' ' ) '') ) isStudent=' isStudent ',job=' job ',test1=' test1 ',test2=' test2',cls=' cls '}; }} 2.2、job.javapackagecom.enjoy.gsondemo.bean; 公共类作业{专用测试名称; 私有内销售; 公共作业(字符串名称,int salary ) )。
this.name = name; this.salary = salary; } @Override public String toString() { return "Job{" + "name='" + name + ''' + ", salary=" + salary + '}'; }} 3、对Java对象进行序列化与反序列化 @Test public void testNestedObject() { //java对象 User u1 = new User("zzuli", "123", 18, false); Job job = new Job("工人", 10000); u1.setJob(job); //Gson提供的Gson对象 Gson gson = new Gson(); //序列化 String json = gson.toJson(u1); System.out.println("序列化:" + json); User u2 = gson.fromJson(json, User.class); System.out.println("反序列化:" + u2.getUserName() + "-" + u2.getPassword() +"-"+u2.getJob()); } 4、对Aarray、List进行序列化与反序列化 package com.enjoy.gsondemo;import com.enjoy.gsondemo.bean.User;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import org.junit.Test;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.List;public class ArrayUnitTest { @Test public void testArray() { User[] users1 = new User[3]; //java对象 users1[0] = new User("wgdsn", "123", 18, false); users1[1] = new User("炙热的吐司", "123", 88, true); //Gson提供的Gson对象 Gson gson = new Gson(); //序列化 String json = gson.toJson(users1); System.out.println("序列化:"+json); User[] users2 = gson.fromJson(json, User[].class); System.out.println("反序列化0:"+users2[0]); System.out.println("反序列化1:"+users2[1]); System.out.println("反序列化2:"+users2[2]); } @Test public void testListObject() { List<User> list1 = new ArrayList<>(); list1.add(new User("wgdsn", "123", 18, false)); list1.add(new User("炙热的吐司", "123", 88, true)); list1.add(null); //Gson提供的Gson对象 Gson gson = new Gson(); //序列化 String json = gson.toJson(list1); System.out.println("序列化:"+json); //反序列化 Type type = new TypeToken<List<User>>() { }.getType(); List<User> list2 = gson.fromJson(json, type); System.out.println("反序列化0:"+list2.get(0).getUserName()); System.out.println("反序列化1:"+list2.get(1)); System.out.println("反序列化2:"+list2.get(2)); }}Array
List
Map
Set
@SerializedName注解
用于手动指定序列化的key值
@Expose()注解
果想要让java类的某些字段不参加序列化或反序列化,可以显示来设置。如:
注意使用该注解进行序列化与反序列化需要一些列方式创建Gson对象
//Gson提供的Gson对象 Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();