栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java gson使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java gson使用

一、简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个JSON字符串转成一个Java对象(反序列化),或者反过来(序列化)。

二、使用 1、依赖管理


  com.google.code.gson
  gson
  2.9.0

2、JavaBean序列化/反序列化
//Java对象序列化为字符串
public String toJson(Object src);
//将jsonstr 反序列化为Java 对象
public  T fromJson(String json, Class classOfT)
1、普通Java对象
		Gson gson = new Gson();
        Person person = new Person("zhangsan", 20, true);
        String json = gson.toJson(person);//序列化成字符串
        System.out.println("序列化成字符串:"+json);
        Person person1=gson.fromJson(json,Person.class);
        System.out.println("反序列化:"+person1);
2、Java数组对象
    public static void testGsonaRRAY() {
        Gson gson = new Gson();
        Person person1 = new Person("zhangsan", 20, true);
        Person person2= new Person("zhangsan", 20, true);
        Person person3 = new Person("zhangsan", 20, true);
        Person[] persons = new Person[3];
        persons[0]=person1;
        persons[1]=person2;
        persons[2]=person3;
        String s = gson.toJson(persons);
        System.out.println("序列化:"+s);
        Person[] people = gson.fromJson(s, Person[].class);
        System.out.println("反序列化:"+people[0]);
        System.out.println("反序列化:"+people[1]);
        System.out.println("反序列化:"+people[2]);
    }
3、List

对泛型集合,进行反序列化需要使用TypeToken设置类型

    public static void testList(){
        ArrayList arrayList = new ArrayList<>();
        arrayList.add(new Person("zhangsan",20,false));
        arrayList.add(new Person("zhangliu",21,false));
        arrayList.add(new Person("zhangwu",22,false));
        Gson gson = new Gson();
        String s = gson.toJson(arrayList);
        System.out.println("序列化:"+s);
        Type type = new TypeToken>() {}.getType(); //泛型类型,import com.google.gson.reflect.TypeToken;
        List list = gson.fromJson(s, type);
        list.forEach(System.out::println);
    }

Set 、Map集合类型

 Type type = new TypeToken>() {}.getType();
Set personSet= gson.fromJson(s, type); //反序列化

Type type = new TypeToken>() {}.getType(); 
Map userMap2 = gson.fromJson(s, type);



4、变量值为null时的序列化/反序列化

如果一个变量的值为NULL,那么按照GSON默认的处理为忽略这个宁段

5、控制序列化/反序列化的变量名称

可以借助@SerializedName注解控制JSON字段中Key的命名。
如果希望指定GSON对某些字段配置是否参与序列化与反序列化可以使用@Expose注解控制,同时使用GsonBuilder创建Gson对象:
另外直接使用transient关键字修饰的变量,也可以让该变量不参与序列化/反序列化

三、GsonBuilder

GsonBuilder 构建 Gson
对于默认配置的 Gson,直接使用 new Gson 更简单,当需要设置默认值以外的配置选项时,使用 GsonBuilder 构建器,调用它的各种配置方法,最后调用 create 方法创建 Gson 对象。

//序列化空字段,默认情况下,Gson 序列化期间会忽略所有为 null 的字段
GsonBuilder serializeNulls();
//根据提供的模式序列化 Date 日期对象,可以多次调用,但只有最后一次调用将用于决定序列化格式。
GsonBuilder setDateFormat(String pattern);
四、JsonObject 1、JsonElement

Gson中Json对象的抽象类,代表着json串的某一个元素,元素可以为有JsonArray(json数组)、JsonObject(json对象)、JsonPrimitive(Java基本类型)、JsonNull(null)

2、JsonParser

将json字符串转化为JsonElement对象

//将jsonstr转化为JsonElement
public static JsonElement parseString(String json) 

public static JsonElement parseReader(Reader reader)

public static JsonElement parseReader(JsonReader reader)
3、JsonPrimitive

Java基本类型

public static void testJsonObject2(){
        Person person = new Person("zhangwu", 22, true);
        Gson gson = new Gson();
        String s = gson.toJson(person);
        JsonObject jsonObject1 = gson.fromJson(s, JsonObject.class);
        System.out.println(jsonObject1);
        System.out.println("===========jsonParser==============");
        JsonObject jsonObject2 = JsonParser.parseString(s).getAsJsonObject();
        System.out.println(jsonObject2.get("gender").getAsBoolean());
        Set strings = jsonObject2.keySet();
        for (String str:strings) {
            System.out.println(jsonObject2.get(str));
        }
        JsonObject jsonObject3 = new JsonObject();
        jsonObject3.add("person",jsonObject2);
        System.out.println(jsonObject3.get("person"));
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号