Gson-JsonParser解析Json字符串

来源:互联网 发布:ch341a编程器软件1.30 编辑:程序博客网 时间:2024/04/29 00:46

背景:

gson工具在转换json字符串的时候非常方便,一种是常常用到的转换成对象的方式,还有一种是使用类似原生的转换方式,两种都有各自的好处以及各自的应用场景,第一种往往是针对对象字段比较稳定,不会经常变更时使用,而且更偏向于面向对象的原则,第二种更多是针对字段容易频繁修改,即内容不稳定的json串,如日志打点记录的场景,所以此时就会用到JsonParser来做一些通用的转换


适用的数据结构:

[{key1:val1,key2:val2},{key3:val3,key4:val4},......]

(附:方法使用是类似的,如果有其它json结构可以自己动态扩展)


引入的gson版本

com.google.code.gson -> gson 1.7.1


代码示例如下:

    public void analyseLogWithNative(String logData) {            Gson gson = GsonFactory.get();            JsonParser jp = new JsonParser();JsonElement je = jp.parse(logData);if(!je.isJsonArray()){return;}JsonArray jsa = je.getAsJsonArray();for(int i=0;i<jsa.size();i++){JsonElement jesub =jsa.get(i);if(!jesub.isJsonObject()){continue;}JsonObject jaaa = jesub.getAsJsonObject();Map<String,String> resMap = gson.fromJson(jaaa.toString(), new TypeToken<Map<String,String>>() {}.getType());if(MapUtils.isEmpty(resMap)){continue;}                        //根据自己的业务需求去实现就可以了 TODOprintLog(resMap);}    }

logData的格式可以参考如下(上面方法仅支持该格式):

[    {        name: "qiulr",        age: 18    },    {        addr: "大街南123号",        phone: "134322325**"    },    {        key1: "val1",        key2: "val2",        key3: "val3"    }]
0 0
原创粉丝点击