Android-第三方框架-json解析(FastJson,GJson)
来源:互联网 发布:python接收命令行参数 编辑:程序博客网 时间:2024/06/06 06:33
简介
目前,服务器数据请求大多以json格式返回,android2.3提供的json解析类 JSONObject。但是这个需要自己封装一个json解析类。同时目前主流框架选择:
google的Gson 和阿里巴巴的FastJson。
FastJson
compile 'com.alibaba:fastjson:1.2.22'
下载地址http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.14/
FastJson常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
示例
json数据1 - data: {"status":1,"data":"","messages":"验证成功"}JSONObject jsonObject = JSONObject.parseObject(data);String message = jsonObject.getString("messages");
**json数据2 - data:** { "now": { "englishName": "Sunny/Clear", "imgUrl": "http://10.60.62.118:8090/parkinglot//images/cond_icon/100.png", "fl": "36", "name": "晴", "code": 100 }, "aqi": { "pm10": "72", "pm25": "43", "qlty": "轻度污染" }, "vehicle_restriction": {}}**新建Bean对象**public class WeatherBean { private Aqi aqi; private Now now; private Vehicle vehicle_restriction; public Aqi getAqi() { return aqi; } public void setAqi(Aqi aqi) { this.aqi = aqi; } public Now getNow() { return now; } public void setNow(Now now) { this.now = now; } public Vehicle getVehicle_restriction() { return vehicle_restriction; } public void setVehicle_restriction(Vehicle vehicle_restriction) { this.vehicle_restriction = vehicle_restriction; } public class Aqi{ public String pm10; public String pm25; public String qlty; } public class Now{ public String code; public String name; public String englishName; public String imgUrl; public String fl; } public class Vehicle{ public String number; public String area; } }**数据转换**WeatherBean weath = JSONObject.parseObject(resultData,WeatherBean.class);
其他的就不一一说明,需要的自己尝试或度娘。
注:经验得出:fastjson的key不区分大小的。
例如:private Aqi aqi;写成private Aqi AQI;也可以解析出来
错误及解决
错误1:JSONObject parseObject解析错误
com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0
原因:
1:http请求方式错误。Get请求写成了Post请求。
2:bean里内嵌了一个bean变量。,转换有时会有问题。
3:返回是List,调用错误。解决:
JSONObject parseObject 改 JSONObject.parseArray(个人尝试)
Gson
Gson由谷歌研发,可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。
compile 'com.google.code.gson:gson:2.4'
下载,http://search.maven.org/#search%7Cga%7C1%7Ccom.google.code.gson
toJson()方法
用于将Java对象转换为相应的JSON数据,主要有以下几种形式:
- String toJson(JsonElement jsonElement); //JsonObject、JsonArray等转换成JSON数据
- String toJson(Object src);//用于将指定的Object对象序列化成相应的JSON数据
- String toJson(Object src, Type typeOfSrc);//用于将指定的Object对象(可以包括泛型类型)序列化成相应的JSON数据
fromJson()方法
用于将JSON数据转换为相应的Java对象,主要有以下几种形式:
- T fromJson(JsonElement json, Class classOfT);
- T fromJson(JsonElement json, Type typeOfT);
- T fromJson(JsonReader reader, Type typeOfT);
- T fromJson(Reader reader, Class classOfT);
- T fromJson(Reader reader, Type typeOfT);
- T fromJson(String json, Class classOfT);
- T fromJson(String json, Type typeOfT);
以上的方法用于将不同形式的JSON数据解析成Java对象。
注意:如果你的Json里面不止一个对象,那么你就得使用一个集合来装,我们这里模拟一个list来装的例子,在使用list装的过程中我们会使用到一个工具类,typeToken,通过它我们可以获取一个泛型的数据类型,使用方法十分简单,TypeToken(泛型)(){}.gettype()即可,返回一个type类型,这就是fromjson所需要的type类型,
**json数据** String s="[{name:'zhangsan',age:12},{name:'lisi',age:12}]";**bean对象**public class user { private String name; private int age; .....}**json转换**new Gson()fromJson(jsonString, new TypeToken<List<Person>>(){}.getType());
- Android-第三方框架-json解析(FastJson,GJson)
- SpringBoot 之 第三方Json解析框架FastJson的使用
- springboot使用第三方的json解析框架fastjson
- 非常棒的第三方JSON解析库Fastjson
- Spring Boot 使用第三方json解析 : fastjson
- Android之GJSON解析
- Android FastJson,json解析
- fastjson (json解析/生成框架)
- android json解析(fastjson,Gson等)
- Android json解析(FastJson Gson 对比)
- 安卓常用第三方框架-FastJson
- Android常用Json解析框架GSON和FastJson的使用
- (3)spring boot如何使用第三方json解析框架
- Android框架之路——Json解析一篇就够(原生技术+Gson+FastJson)
- JSON解析-GSON-FastJSON.android
- Android-解析Json(Gson-FastJson)
- Android通用网络请求解析框架.9(支持第三方解析框架)
- Android解析JSON数据(三)——FastJson解析
- HDU-1255 覆盖的面积(线段树扫描线模板+离散化+加点修改题)
- 浅析TCP中时间戳选项timestamp
- C语言编写简易通讯录
- ubuntu16.0.4环境下搭建DeepNet深度学习框架
- RxJava中多种场景的实现总结
- Android-第三方框架-json解析(FastJson,GJson)
- ubuntu 16.04 重新安装启动SSH及docker
- hive 之 in 能否使用子查询的疑惑
- 编辑测试
- 使用 create-react-app 构建 react应用程序 (react-scripts)
- Android Studio 超级简单的打包生成apk
- 关于idea 与Mybatis自动扫描注册mapper bean的在IDE中提示无法自动注入的解决方案
- js实现分页控件中当前页的页标始终在中间
- Snapdragon Neural Processing Engine