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()); } } } }
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
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。