Google推出的Gson是一个使用Java语言实现的Json解析库,可以将Json字符串自动解析成Java对象,或者将Java对象转成Json字符串。在Android开发中,使用Gson解析Json数据是非常常见的操作。本文将介绍Gson解析Json的完整攻略。
Android学习笔记45之gson解析json
简介
Google推出的Gson是一个使用Java语言实现的Json解析库,可以将Json字符串自动解析成Java对象,或者将Java对象转成Json字符串。在Android开发中,使用Gson解析Json数据是非常常见的操作。本文将介绍Gson解析Json的完整攻略。
配置Gson库
- 在项目的build.gradle文件中添加Gson库的依赖:
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}
- 在需要使用Gson库的Activity或者Fragment中导入Gson库:
import com.google.gson.Gson;
Gson解析Json
假设我们有如下的Json数据:
{
"name": "张三",
"age": 20,
"phoneNumbers": ["123456789", "987654321"],
"address": {
"street": "中山路",
"city": "上海"
}
}
我们想要将这个Json数据解析成一个Java对象,代码如下:
// 定义一个Person类,用于保存解析后的数据
public class Person {
public String name;
public int age;
public List<String> phoneNumbers;
public Address address;
}
// 定义一个Address类,用于保存解析后的地址数据
public class Address {
public String street;
public String city;
}
// 解析Json数据
String jsonStr = "{\"name\":\"张三\",\"age\":20,\"phoneNumbers\":[\"123456789\",\"987654321\"],\"address\":{\"street\":\"中山路\",\"city\":\"上海\"}}";
Gson gson = new Gson();
Person person = gson.fromJson(jsonStr, Person.class);
解析后,我们可以通过person对象来获取Json中的数据:
person.name = "张三"
person.age = 20
person.phoneNumbers = ["123456789", "987654321"]
person.address.street = "中山路"
person.address.city = "上海"
Gson转成Json
我们也可以将Java对象转成Json字符串。例如,将上面解析出来的Person对象转成Json字符串:
Person person = new Person();
person.name = "张三";
person.age = 20;
person.phoneNumbers = new ArrayList<>();
person.phoneNumbers.add("123456789");
person.phoneNumbers.add("987654321");
Address address = new Address();
address.street = "中山路";
address.city = "上海";
person.address = address;
Gson gson = new Gson();
String jsonStr = gson.toJson(person);
转换后,jsonStr的值为:
{"name":"张三","age":20,"phoneNumbers":["123456789","987654321"],"address":{"street":"中山路","city":"上海"}}
以上是Gson解析Json的完整攻略,示例代码也有详细讲解。需要注意的是,在解析Json数据时,需要定义和Json对应的Java对象,属性名和Json中的key对应。同时,需要保证解析出来的Json数据类型正确,否则会抛出异常。
本文标题为:Android学习笔记45之gson解析json
基础教程推荐
- mybatis水平分表实现动态表名的项目实例 2023-03-22
- SpringBoot深入浅出分析初始化器 2023-03-06
- Java实现解析zip压缩包并获取文件内容 2023-03-15
- Spring框架IOC容器底层原理详解 2023-03-22
- SpringBoot详解整合MyBatis过程中可能遇到的问题 2023-02-11
- java中数据库字典的最佳实践 2023-11-03
- 基于SpringBoot实现代码在线运行工具 2022-12-11
- RocketMQ消息存储文件的加载与恢复机制源码分析 2023-07-14
- 使用jar包反编译形成pom工程 2023-01-18
- JSP + Servlet实现生成登录验证码示例 2023-08-01