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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM