通过GSON 解析Json数据,但是不创建JAVA Bean的方式,获取对应的值
来源:互联网 发布:初学者学英语软件 编辑:程序博客网 时间:2024/05/22 20:29
问题:一般我们会把对应的json数据解析后映射到对应的Java Bean上,但是现在项目底层变化,不能创建Java Bean.怎么通过字符串的方式获取到对应的Value?
解决思路: 首先,应该把Json转换为Map嵌套Map的格式,如果遇到数组,Gson会帮我们自动的转化成ArrayList。这个很关键。然后获取对应集合里面的元素。这个元素是个Map就继续获取。直到最后成为String.
package demo;import java.util.HashMap;import java.util.List;import java.util.Map;import com.google.gson.Gson;public class GsonTest { public static void main(String[] args) { String jsonStr = "{\"lendperson\":\"李四\",\"user\":{\"username\":\"kobe\",\"password\":\"1111\"},\"lendcompany\":\"有限公司\",\"checkperson\":\"李四\",\"lenddate\":\"2010-07-19T00:00:00\",\"lendcounts\":4,\"passports\":[{\"passportid\":\"d\",\"name\":\"李豫川\",\"passporttype\":\"K\"},{\"passportid\":\"K9051\",\"name\":\"李平\",\"passporttype\":\"K\"},{\"passportid\":\"K905199\",\"name\":\"贺明\",\"passporttype\":\"K\"}]}"; Gson gson = new Gson(); Object obj = gson.fromJson(jsonStr,HashMap.class); String value = "this.passports[2].name";// String value = "this.user.password"; String[] strs = value.split("\\."); for(int i = 1; i < strs.length; i++) { if(strs[i].contains("[")) { String index = strs[i].substring(strs[i].indexOf("[")+1, strs[i].indexOf("]")); String key = strs[i].substring(0, strs[i].indexOf("["));// obj = ((List)((Map)obj).get(key)).get(Integer.valueOf(index)); Object objList = ((Map)obj).get(key); //获取到的是一个List type,然后强转成List if(objList instanceof List) { System.out.println(objList); } obj = ((List)objList).get(Integer.valueOf(index)); System.out.println(obj); } else { obj = ((Map)obj).get(strs[i]);//如果是一个map,会继续获取,直到获取到对应的值。 if(obj instanceof Map) { System.out.println("11"+obj); } } } System.out.println(obj); }}
0 0
- 通过GSON 解析Json数据,但是不创建JAVA Bean的方式,获取对应的值
- Gson解析不区分大小写,json中多个key对应同一个bean的key
- gson解析通过okhttp获取的json格式数据
- gson 解析json 字符串 获取对应的键值
- Gson解析json的数据
- Json数据的解析-Gson
- Android中解析json数据的方式之一:Gson
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段
- ndroid 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发
- Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发
- Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发
- 通过Gson解析Json数据
- 递归递推练习 I 蟠桃记
- java语法基础
- 如何从git官网下载dubbo监控中心dubbo-admin
- 标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
- Eratosthenes筛法求素数表
- 通过GSON 解析Json数据,但是不创建JAVA Bean的方式,获取对应的值
- C#抽象方法和抽象类
- HDU 2955 Robberies(01背包)
- C++ 多态机制实现
- 希尔排序
- 在linux下编译cpp文件出现错误
- [网络流24题-4]cogs729 圆桌聚餐
- 迷宫寻路问题——一阶谓词逻辑
- Android退出应用