使用Gson解析Json为Map对象探索(下)
使用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对象探索(下)相关推荐
- 使用Gson解析Json为Map对象探索(上)
使用Gson解析Json为Map对象探索(上) 有些时候由于后台业务系统的不一样导致一个Json的list对象装的并非是同一种类型的对象,导致无法建立比较好的Java模型,而刚好可以利用map对象的通 ...
- Android之GSON解析JSON
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库. 比如: <pre name="code" class=" ...
- JSONObject 和 GSON 解析 JSON 数据详解(转)
转载:http://www.jianshu.com/p/f99de3ec0636 点此进入:从零快速构建APP系列目录导图 点此进入:UI编程系列目录导图 点此进入:四大组件系列目录导图 点此进入:数 ...
- gson解析php,php,android_关于 Gson 解析JSON数据。。。,php,android - phpStudy
关于 Gson 解析JSON数据... 1.首先,我是从服务器端传回来的JSON数据如下: {"info":"succeed","user_id&qu ...
- Java-json系列(一):用GSON解析Json格式数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- 软件测试开发实战| Java版本,Gson解析json比较常用的2种方式
软件测试开发基础中,关于json的解析是比较常见的,作为软件测试人员,json的基础需要掌握.这篇文章介绍Gson解析json比较常用的有2种方式,如下. Gson解析json比较常用的有2种方式: ...
- GSON解析JSON保存到数据库
今天给大家带来的文章为通过Gson解析json数据并快速保存至数据库的文章.我们要保存是json对象数组,本文中的json数组并非从后台获取,为了演示,直接手动构造. 需要保存到数据库的是手机的品牌和 ...
- Gson 解析Json 原文地址:http://www.open-open.com/lib/view/open1472632967912.html
比如下面的这个JSON: "muser": [{"name": "zhangsan","age": "10&q ...
- Android--------使用gson解析json文件
##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...
最新文章
- 云南大学计算机网络原理,云南大学软件学院计算机网络原理期中试卷王世普.doc...
- QT中写一个求QVector容器中数据均值的函数
- [C++] 匿名管道的理解与实现
- Linux内存管理详解
- INNER JOIN连接两个表、三个表、五个表的SQL语句
- Eclipse+CDT+GDB调试android NDK程序(转)
- RNN神经网络- 吴恩达Andrew Ng 循环神经网络 NLP Transformers Week4 知识总结
- 验证软件包的数字签名
- cocos2d-js adblock插件冲突
- excel游戏_Excel集中游戏
- word去掉标题前面的黑点
- 视频流媒体直播系统---------BroadVision WebTV
- ABO区块链在医疗行业中的重要作用
- The CXX compiler identification is unknown
- [计算机网络] 实验 5 电子邮件
- uc_client 同步登陆
- element-ui表格求和求平均数
- 融跃教育登陆湖南卫视!揭秘融跃是个什么样机构!CFA/FRM/ACCA
- CSP 201609-3 炉石传说(C++)
- 二维标准Kalman滤波