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()); } } } }
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