使用Gson解析Json为Map对象探索(下)

下面来说说其中出现的问题

1.如何获取一个list列表

1.1首先是数据格式

1.2处理成列表的代码

com.google.gson.Gson gson = new  com.google.gson.Gson();// 先转换成Map对象Map<String , Object> map = gson.fromJson(str,Map.class);//例如我们想要l1的列表值//先获取l1节点的值Map<String , Object> aMaps = ( Map<String , Object>) map.get("l1");List<Map<String, Object>> maps = new ArrayList<>();for (String s : aMaps.keySet()) {Map<String, Object> hashMap = new HashMap<>();hashMap.put(s,aMaps.get(s));maps.add(hashMap);}System.out.println(maps);}

1.3输出的结果

2.json是Int类型的时候如何脱坑

2.1在上列中我们看到121这个结果被解析成了121.0
解决方式是重写TypeAdapter
2.2代码:

Gson gson = new GsonBuilder().registerTypeAdapter(new TypeToken<Map<String, Object>>() {}.getType(), new MyTypeAdapter()).create();// 先转换成Map对象Map<String , Object> map = gson.fromJson(str,new TypeToken<Map<String, Object>>() {}.getType());//例如我们想要l1的列表值//先获取l1节点的值Map<String , Object> aMaps = ( Map<String , Object>) map.get("l1");List<Map<String, Object>> maps = new ArrayList<>();for (String s : aMaps.keySet()) {Map<String, Object> hashMap = new HashMap<>();hashMap.put(s,aMaps.get(s));maps.add(hashMap);}System.out.println(maps);static class MyTypeAdapter extends TypeAdapter {@Overridepublic Object read(JsonReader in) throws IOException {JsonToken token = in.peek();switch (token) {case BEGIN_ARRAY:List<Object> list = new ArrayList<Object>();in.beginArray();while (in.hasNext()) {list.add(read(in));}in.endArray();return list;case BEGIN_OBJECT:Map<String, Object> map = new LinkedTreeMap<String, Object>();in.beginObject();while (in.hasNext()) {map.put(in.nextName(), read(in));}in.endObject();return map;case STRING:return in.nextString();case NUMBER:/** 判断数字的类型**/double dbNum = in.nextDouble();// 数字超过long的最大值,返回浮点类型if (dbNum > Long.MAX_VALUE) {return dbNum;}// 判断数字是否为整数值double eps = 1e-10;  // 精度范围if (dbNum-Math.floor(dbNum) < eps) {return (long) dbNum;} else {return dbNum;}case BOOLEAN:return in.nextBoolean();case NULL:in.nextNull();return null;default:throw new IllegalStateException();}}@Overridepublic void write(JsonWriter out, Object value) throws IOException {}}

2.3输出值

使用Gson解析Json为Map对象探索(下)相关推荐

  1. 使用Gson解析Json为Map对象探索(上)

    使用Gson解析Json为Map对象探索(上) 有些时候由于后台业务系统的不一样导致一个Json的list对象装的并非是同一种类型的对象,导致无法建立比较好的Java模型,而刚好可以利用map对象的通 ...

  2. Android之GSON解析JSON

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库. 比如: <pre name="code" class=" ...

  3. JSONObject 和 GSON 解析 JSON 数据详解(转)

    转载:http://www.jianshu.com/p/f99de3ec0636 点此进入:从零快速构建APP系列目录导图 点此进入:UI编程系列目录导图 点此进入:四大组件系列目录导图 点此进入:数 ...

  4. gson解析php,php,android_关于 Gson 解析JSON数据。。。,php,android - phpStudy

    关于 Gson 解析JSON数据... 1.首先,我是从服务器端传回来的JSON数据如下: {"info":"succeed","user_id&qu ...

  5. Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  6. 软件测试开发实战| Java版本,Gson解析json比较常用的2种方式

    软件测试开发基础中,关于json的解析是比较常见的,作为软件测试人员,json的基础需要掌握.这篇文章介绍Gson解析json比较常用的有2种方式,如下. Gson解析json比较常用的有2种方式: ...

  7. GSON解析JSON保存到数据库

    今天给大家带来的文章为通过Gson解析json数据并快速保存至数据库的文章.我们要保存是json对象数组,本文中的json数组并非从后台获取,为了演示,直接手动构造. 需要保存到数据库的是手机的品牌和 ...

  8. Gson 解析Json 原文地址:http://www.open-open.com/lib/view/open1472632967912.html

    比如下面的这个JSON: "muser": [{"name": "zhangsan","age": "10&q ...

  9. Android--------使用gson解析json文件

    ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...

最新文章

  1. 云南大学计算机网络原理,云南大学软件学院计算机网络原理期中试卷王世普.doc...
  2. QT中写一个求QVector容器中数据均值的函数
  3. [C++] 匿名管道的理解与实现
  4. Linux内存管理详解
  5. INNER JOIN连接两个表、三个表、五个表的SQL语句
  6. Eclipse+CDT+GDB调试android NDK程序(转)
  7. RNN神经网络- 吴恩达Andrew Ng 循环神经网络 NLP Transformers Week4 知识总结
  8. 验证软件包的数字签名
  9. cocos2d-js adblock插件冲突
  10. excel游戏_Excel集中游戏
  11. word去掉标题前面的黑点
  12. 视频流媒体直播系统---------BroadVision WebTV
  13. ABO区块链在医疗行业中的重要作用
  14. The CXX compiler identification is unknown
  15. [计算机网络] 实验 5 电子邮件
  16. uc_client 同步登陆
  17. element-ui表格求和求平均数
  18. 融跃教育登陆湖南卫视!揭秘融跃是个什么样机构!CFA/FRM/ACCA
  19. CSP 201609-3 炉石传说(C++)
  20. 二维标准Kalman滤波

热门文章

  1. 5e服务器显示fps被锁定,5E掉帧严重 别给我说是我硬件问题
  2. mhdd应用详解-入门篇(图文教程)
  3. FLASH水波纹效果动画制作教程图文自编
  4. 数据库中的触发器是用来做什么的?
  5. wmic diskdrive get serialnumber是什么指令
  6. RP原型资源分享-购物类App
  7. linux调节系统声音
  8. 计算机专业现在如此受人欢迎,市场会不会因此饱和?
  9. 阿里出品的这份Java性能调优实战手册,直接涨薪25K,真的香啊
  10. uniapp圆形进度条