Android JSON解析第三方框架Gson使用详解
目录Android Studio导入Gson序列化Java对象反序列化JSON对象反序列化JSON数组反序列化List注解字段名并不一致限定某个字段不参加序列化或反序列化Gson是谷歌官方推出的支持JSON和Java Oject相关转换的开源Java库。开源地址:https://github.com/google/gson使用方式如下:Android Studio导入Gsonimple...
·
本文目录
Gson概述
Gson是谷歌官方推出的支持JSON和Java Oject相关转换的开源Java库。
开源地址:https://github.com/google/gson
使用方式
Android Studio导入Gson
implementation 'com.google.code.gson:gson:2.8.6'
序列化Java对象
首先创建一个User类并提供如下属性
public class User {
public String name;
public int age;
public String phone;
public User(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
}
Gson序列化改对象方法
User student = new User("lucas",30,"18888888888");
Gson gson = new Gson();
String string = gson.toJson(student);
得到的结果如下:
{
"name": "lucas",
"age": 30,
"phone": "18888888888"
}
Gson解析JSON对象
Gson解析JSON对象字符串
{
"name": "lucas",
"age": 30,
"phone": "18888888888"
}
Gson gson = new Gson();
User bean = gson.fronJson(jsonData, User.class);
Gson解析JSON数组
反序列化的JSON数组如下
[ "张三", "李四", "王五" ]
Gson gson = new Gson();
String[] strings = gson.fromJson(result, String[].class);
Gson解析List
[
{
"id": "001",
"age": 30,
"name": "张三",
"isstudent": false
},
{
"id": "002",
"age": 25,
"name": "李四",
"isstudent": true
},
{
"id": "003",
"age": 26,
"name": "王五",
"isstudent": true
}
]
Gson gson = new Gson();
Type userListType = new TypeToken<ArrayList<User>>(){}.getType();
List<User> userList = gson.fromJson(result, userListType);
Gson中的注解
@SerializedName
该注解是用来解决字段名并不一致
@SerializedName("name")
@SerializedName({"name1", "name2"}) // 可以有多个备选值
public String name1;
@Expose
该注解是用来限定某个字段不参加序列化或反序列化
@Expose(serialize=false,deserialize=false)
private String name;
Android Studio JSON插件
GsonFormat
虽然我们学会了用Gson解析JSON,但是写实体类是一件很枯燥、耗时的事情,我们需要对着api文档返回的数据一个一个的去建各种实体类。想摆脱这种烦恼的事情,我们可以用GsonFormat插件,帮我我们自动的把JSON转成实体类。
安装方法如下:
使用方式和效果演示:
- 新建实体类
- 右键generate
- GsonFormat
这样的话我们就不用再一个个的新建试题类了
JsonOnlineViewer
这是一个Android Studio中调试接口的神器
使用方法:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献13条内容
所有评论(0)