使用Gson解析数据
来源:互联网 发布:iphone软件怎么做 编辑:程序博客网 时间:2024/03/28 23:02
使用Gson解析数据时可以把要解析的内容看作整个对象,然后以对象的形式解析。
但在有些时候,需要对数据某些字段进行判断,再根据结果进行解析,这时候就需要对解析的内容的某些部分单独解析。
使用方式如下:
JsonReader reader = new JsonReader(new StringReader(value));reader.setLenient(true);JsonObject jsonObject = new JsonParser().parse(reader).getAsJsonObject();以JsonParser.parse的形式,获取JsonElement对象,再通过getAsInt,getAsJsonArray等的形式便可获取到要解析的字段。
其中,在new JsonParser().parse()的方法的时候,parse()的参数如果为String字符串,在某些情况会出错。在用公司平板测试时,会偶尔报一些错误,但是在手机上则没有报这些错误。使用参数为JsonReader的形式可以避免这些错误。
同时,解析内容如果为
{"countpage": 1, "data": [ { "cid": "5", "code": "00000006", "iccode": "15118375619", "id": "6", "initial": "l", "name": "张三", "parents": "张@@", "parentsphone": "XXXXXXXX", "parid": "6", "sex": "1", "sid": "2", "token": "ca39f511a25814c9475f6e5f952f9d89" }, .....]}也会出现解析异常,可以使用以下的形式解析,避免出错。通过getAsJsonArray()获取到集合对象,再进行解析。
public <T> ArrayList<T> getDataList(JsonArray jsonArray, Class<T> cls) {ArrayList<T> mList = new ArrayList<T>();try {for (final JsonElement elem : jsonArray) {mList.add(new Gson().fromJson(elem, cls));}} catch (Exception e) {e.printStackTrace();}return mList;}
附:常见的解析形式
/** * 解析返回字符串List集合 * @param jsonString * @return */public static List<String> getListString(String jsonString) {List<String> list = new ArrayList<String>();try {Gson gson = new Gson();list = gson.fromJson(jsonString, new TypeToken<List<String>>() {}.getType());} catch (Exception e) {}return list;}
/** * 解析返回List内嵌Map集合 * @param jsonString * @return */public static List<Map<String, Object>> getListMap(String jsonString) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();try {Gson gson = new Gson();list = gson.fromJson(jsonString, new TypeToken<List<Map<String, Object>>>() {}.getType());} catch (JsonSyntaxException e) {e.printStackTrace();}return list;}
/** * 解析List集合 * @param jsonElement * @param cls * @return */public <T> List<T> getListData(JsonElement jsonElement, Class<T> cls) {List<T> mList = new ArrayList<T>();try {mList = new Gson().fromJson(jsonElement, new TypeToken<List<T>>() {}.getType());} catch (Exception e) {e.printStackTrace();}return mList;}
public static <T> T getTData(String jsonString, Class<T> cls) {T t = null;try {Gson gson = new Gson();t = gson.fromJson(jsonString, cls);} catch (Exception e) {}return t;}
0 0
- 使用Gson解析数据
- 使用Gson解析数据
- 使用GSON 解析JSON 数据
- 使用Gson解析json数据
- Gson解析数据使用笔记
- 使用Gson解析json数据
- 使用Gson解析json数据
- 使用Gson解析json数据
- 使用Gson解析json数据
- 使用Gson解析Json数据
- 使用GSON解析json数据
- 使用gson解析json数据
- 使用Gson解析json数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- html中javascript实现打字机效果
- HDU 5475 La Vie en rose(暴力 2016 Multi-University Training Contest 2 )
- linux关于bashrc与profile的区别
- 转载一份C++线程池的代码,非常实用
- iOS开发--用企业证书生成IPA包遇到的坑
- 使用Gson解析数据
- const的使用
- 计算机层次化存储结构
- php 四种排序
- 关于面向对象
- Android 点击图片放大
- Activity和进程的关系
- poj2983 Is the Information Reliable?
- vim编辑器常用的命令