今天,来总结一下android之json解析中常用的技术框架库:Gson和FastJson。上一篇文章,已经说过,Json作为跨平台的数据传输格式,应用很广泛,特别在网络请求与服务器这两块更是处处可见,所以掌握几种常用的Json解析的框架技术是很有必要的,它们可以实现java对象与json字符串数据的转换。
首先,需要下载jar包或者依赖一下这两个库,目前as中已经为我们提供了最新版本的Gson和FastJson包,所以,我们只需要依赖一下就可以了,又或者,你更想用jar形式来导入,无可厚非,放一下网址吧:https://github.com/google/gson和https://github.com/alibaba/fastjson,可自行下载jar包。
下面,来看看他们简单使用方式吧,先从Gson讲起吧!
- Gson的使用
常见的有四种使用情况:分别是将Json格式字符串转化为Java对象、将Json格式字符串数组转化为java对象list、将Java对象转化为json格式字符串和将Java对象的list转化为json格式的字符串数组。
我们来依次看看他们的使用方法:
(1)将json格式的字符串转换为Java对象
private void jsonToJavaObjectByGson() {
// 1 获取或创建JSON数据
String json = ".....";//数据省略
// 2 解析JSON数据
Gson gson = new Gson();
ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
// 3 展示数据
tv_orignal.setText(json);//原始数据
tv_last.setText(shopInfo.toString());//转化后的数据
}
是的,没看错,原本json原生解析方法多行代码在这里是使用了Gson后仅仅只要两行,是不是很快捷方便。这里我们需要提前创建一个java的数据实体类,用于接收json数据,上一章我们已经创建过了,所以这里就不重复造轮子了。
(2)将json格式的字符串数组转换为Java对象的List
private void jsonToJavaListByGson() {
// 1 获取或创建JSON数据
String json = "[.....]";//数据省略
// 2 解析JSON数据
Gson gson = new Gson();
List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {
}.getType());
// 3 展示数据
tv_orignal.setText(json);
tv_last.setText(shops.toString());
}
注意,这里的fromJson传入的第二个参数是获取泛型的数据类型,这里同样很好理解
(3)将Java对象转换为json字符串
private void javaToJsonObjectByGson() {
// 1 获取或创建Java对象
ShopInfo shopInfo = new ShopInfo(1,"咸蛋",2.0,"xiandan");
// 2 生成JSON数据
Gson gson = new Gson();
String json = gson.toJson(shopInfo);
// 3 展示数据
tv_orignal.setText(shopInfo.toString());
tv_last.setText(json);
}
之前将json数据转化为java数据时用的是fromJson(),而这里使用的是toJson()
(4)将Java对象的List转换为json字符串数组
private void javaToJsonArrayByGson() {
// 1 获取或创建Java对象
List<ShopInfo> shops = new ArrayList<>();
ShopInfo rubber = new ShopInfo(1, "橡皮", 25.0, "rubber");
ShopInfo pen = new ShopInfo(2, "钢笔", 31.0, "pen");
shops.add(rubber);
shops.add(pen);
// 2 生成JSON数据
Gson gson = new Gson();
String json = gson.toJson(shops);
// 3 展示数据
tv_orignal.setText(shops.toString());
tv_last.setText(json);
}
java对象list转成json数组更简单,直接传入java对象list就ok
了解了gson基本用法,下面来看看fastJson吧:
2.FastJson的使用
private void jsonToJavaObjectByFastJson() {
// 1 获取或创建json数据
String json = ".....";//数据略
// 2 解析JSON数据
ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);
// 3 显示数据
tv_orignal.setText(json);
tv_last.setText(shopInfo.toString());
}
private void jsonToJavaListByFastJson() {
// 1 获取或创建json数据
String json = "[.....]";
// 2 解析JSON数据
List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);
// 3 显示数据
tv_orignal.setText(json);
tv_last.setText(shopInfos.toString());
}
private void javaToJsonObjectByFastJson() {
// 1 创建一个Java对象
ShopInfo shopInfo = new ShopInfo(1, "铅笔", 25.0, "pencil");
// 2 生成JSON数据
String json = JSON.toJSONString(shopInfo);
// 3 显示数据
tv_orignal.setText(shopInfo.toString());
tv_last.setText(json);
}
private void javaToJsonArrayByFastJson() {
// 1 创建一个Java集合
List<ShopInfo> shops = new ArrayList<>();
ShopInfo rubber = new ShopInfo(1, "橡皮", 25.0, "rubber");
ShopInfo pen = new ShopInfo(2, "钢笔", 31.0, "pen");
shops.add(rubber);
shops.add(pen);
// 2 生成JSON数据
String json = JSON.toJSONString(shops);
// 3 显示JSON数据
tv_orignal.setText(shops.toString());
tv_last.setText(json);
}

本文介绍Android开发中Gson和FastJson两种JSON解析框架的使用方法,包括JSON字符串与Java对象之间的相互转换。
2290

被折叠的 条评论
为什么被折叠?



