【Gson】互相转化

本文介绍了Gson库的基本用法,包括如何将Java对象转换为JSON字符串,以及如何将JSON字符串转换回Java对象。此外,还展示了如何利用Gson处理JSON格式的数据列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

对象转为字符串

String ps =gson.toJson(person);

字符串转为对象

Person person =gson.fromJson(json, Person.class);

字符串为为list

List<Person> persons =gson.fromJson(json, new TypeToken<List<Person>>() {}.getType());

### 如何使用 `com.google.gson.Gson` 进行 JSON 解析 #### 1. 实体类与 JSON 的相互转换 通过 `Gson` 库可以轻松实现 Java 对象与 JSON 字符串之间的互相转换。以下是具体操作: - **Java 对象转为 JSON 字符串** 使用 `toJson()` 方法可将对象序列化为 JSON 字符串[^1]。 ```java import com.google.gson.Gson; public class Example { private static final Gson gson = new Gson(); public static void main(String[] args) { MyClass obj = new MyClass(); obj.setName("Test"); obj.setId(1); // 转换为 JSON 字符串 String jsonString = gson.toJson(obj); System.out.println(jsonString); // 输出 {"name":"Test","id":1} } } class MyClass { private String name; private int id; // Getter 和 Setter 方法省略 } ``` - **JSON 字符串转为 Java 对象** 使用 `fromJson()` 方法可以从 JSON 字符串反序列化为目标类型的实例。 ```java import com.google.gson.Gson; public class Example { private static final Gson gson = new Gson(); public static void main(String[] args) { String jsonString = "{\"name\":\"Test\",\"id\":1}"; // 反序列化为对象 MyClass obj = gson.fromJson(jsonString, MyClass.class); System.out.println(obj.getName()); // 输出 Test } } class MyClass { private String name; private int id; // Getter 和 Setter 方法省略 } ``` --- #### 2. 处理复杂 JSON 数据结构 当面对复杂的 JSON 结构(如嵌套数组或对象),可以通过以下方式进行解析: - **访问 JSON 数组中的元素** 如果 JSON 是一个数组,则可通过 `JsonArray` 来获取其中的每一项并进一步处理[^3]。 ```java import com.google.gson.*; public class JsonExample { public static void main(String[] args) { String jsonArrayStr = "[{\"key\":\"value1\"},{\"key\":\"value2\"}]"; JsonParser parser = new JsonParser(); JsonArray jsonArray = parser.parse(jsonArrayStr).getAsJsonArray(); for (int i = 0; i < jsonArray.size(); i++) { JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); String value = jsonObject.get("key").getAsString(); System.out.println(value); // 输出 value1 和 value2 } } } ``` - **处理嵌套 JSON 对象** 当 JSON 中存在嵌套的对象时,可以直接将其映射到对应Java 类型中。 ```java import com.google.gson.Gson; public class NestedJsonExample { private static final Gson gson = new Gson(); public static void main(String[] args) { String nestedJson = "{ \"outerKey\": { \"innerKey\": \"innerValue\" } }"; OuterClass outerObj = gson.fromJson(nestedJson, OuterClass.class); System.out.println(outerObj.outerKey.innerKey); // 输出 innerValue } } class OuterClass { InnerClass outerKey; } class InnerClass { String innerKey; } ``` --- #### 3. 常见错误及其解决方法 在实际开发过程中可能会遇到一些常见的异常情况,例如 `JsonSyntaxException`。这类问题通常由 JSON 格式不正确引起[^4]。 - **原因分析** 错误可能是因为输入的字符串并非合法的 JSON 或者目标类型定义不符合 JSON 的结构。 - **解决办法** 需要仔细检查 JSON 输入以及对应的目标类型是否匹配。如果不确定 JSON 的具体内容,建议先打印出来调试。 --- #### 总结 以上展示了如何利用 `Gson` 库完成基本的 JSON 解析功能,包括简单的对象转化、复杂的数据结构处理以及常见错误排查。这些技巧能够帮助开发者更高效地处理 JSON 数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值