Gson 基本使用

Gson 概述与下载

1、Java 解析 Json 最常用的类库有:google 的 Gson、阿里巴巴的 FastJson、以及 Jackson。这些都是非常优秀而且常用的库。

2、GSON 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,可以快速的将一个 Json 字符转成一个 Java 对象,或者将一个 Java 对象转化为 Json 字符串。

3、gson 在 github 上开源地址:https://github.com/google/gson

二进制开发包下载:gson 二进制开发包下载地址:https://search.maven.org/artifact/com.google.code.gson/gson/2.8.5/jar

gson-2.8.4.jar下载、gson-2.8.5.jar下载

Maven 依赖:gson 在 Maven 仓库地址:https://mvnrepository.com/artifact/com.google.code.gson/gson

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.5</version>
</dependency>

Gson (反)序列化 Java 对象

  • 1、com.google.gson.Gson 提供 toJson() 和 fromJson() 方法用于序列化与反序列化 Java 对象。
  • 2、Gson 对象的 toJson 方法可以将 Java 基本数据类型、以及 POJO 对象、List、Map 、JsonElement 等转为 json 格式的字符串,
  • 3、Gson 对象的 fromJson 方法做与 toJson 相反的操作,将 json 格式的字符串转为基本数据类型、 POJO 对象、List、Map 、JsonElement 等

 

 

JsonElement  Json 元素

1、JsonObject、JsonArray、JsonPrimitive、JsonNull 都是 JsonElement 的子类,JsonElement  常用方法:

 

 

    /**
     * JsonPrimitive getAsJsonPrimitive():
     * 将此元素作为 JsonPrimitive 获取,如果元素是其他类型的元素,则会引发 IlleglastateException 异常,
     * 因此最好先通过调用 isJsonPrimitive() 方法来确保该元素是所需的类型之后再使用此方法。JsonPrimitive 值可以是 Java 字符串、Java 基本数据类型及其包装器类型。
     */
    @Test
    public void test12() {
        String json = "[\"本级小计\",368.00,328.00,]";
        JsonElement sourceJsonElement = new JsonParser().parse(json);
        JsonArray jsonArray = sourceJsonElement.getAsJsonArray();
        for (int i = 0; i < jsonArray.size(); i++) {
            JsonElement jsonElement = jsonArray.get(i);
            if (jsonElement.isJsonPrimitive()) {
                JsonPrimitive jsonPrimitive = jsonElement.getAsJsonPrimitive();
                if (jsonPrimitive.isString()) {
                    System.out.println(jsonPrimitive.getAsString());
                } else if (jsonPrimitive.isNumber()) {
                    System.out.println(jsonPrimitive.getAsDouble());
                }
            }
        }
    }
View Code

JsonObject Json 对象

 

 

    /**
     * int size():返回对象中键/值对的数目。
     * Set<String> keySet():返回所有成员的键值
     */
    @Test
    public void jsonObject7() {
        String json = "{\"pId\":9527,\"pName\":\"华安\",\"isMarry\":true}";
        JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
        System.out.println(jsonObject.size());
        Set<String> keySet = jsonObject.keySet();//3
        System.out.println(keySet);//[pId, pName, isMarry]
    }

 

 

    @Test
    public void test4() {
        JsonArray jsonArray = new JsonParser().parse("[{\"code\":200,\"msg\":\"成功\"}]").getAsJsonArray();
        JsonArray deepCopy = jsonArray.deepCopy();
        deepCopy.add("Yes");
        System.out.println(jsonArray);//[{"code":200,"msg":"成功"}]
        System.out.println(deepCopy);//[{"code":200,"msg":"成功"},"Yes"]
    }

 

 

    @Test
    public void test1() {
        String json = "{\"id\":1000,\"name\":\"华安\",\"birthday\":\"Jul 13, 2020 8:46:42 PM\",\"marry\":true}";
        JsonParser jsonParser = new JsonParser();
        JsonElement jsonElement = jsonParser.parse(json);
        JsonObject jsonObject = jsonElement.getAsJsonObject();
        System.out.println(jsonObject);//{"id":1000,"name":"华安","birthday":"Jul 13, 2020 8:46:42 PM","marry":true}
    }

 

 

    @Test
    public void test1() {
        Gson gson = new GsonBuilder()
                .serializeNulls()
                .setDateFormat("yyyy-MM-dd HH:mm:ss")
                .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
                .create();
 
        Person person = new Person();
        person.setId(100);
        person.setBirthday(new Date());
 
        String toJson = gson.toJson(person);
        //{"id":100,"name":null,"birthday":"2020-07-19 11:37:35","marry":null}
        System.out.println(toJson);
 
        Person person1 = gson.fromJson(toJson, Person.class);
        //Person{id=100, name='null', birthday=Sun Jul 19 11:37:35 CST 2020, marry=null}
        System.out.println(person1);
    }

 

https://blog.csdn.net/wangmx1993328/article/details/84385548

posted @ 2021-11-24 15:06  wq9  阅读(1867)  评论(0编辑  收藏  举报