您的位置:首页 > 编程语言 > Java开发

Java解析Json格式数据的小总结

2018-03-28 16:51 369 查看
注:以下的总结均是引入的jar包fastjson,例子:String test="{\"response\":{\"api\":\"2.1\",\"args\":[{\"tit\":\"test001\",\"val\":\"测试1\"},{\"tit\":\"test002\",\"val\":\"测试2\"}]}}";1.将String类型转换为JsonObject对象JsonObject object=JSON.parseObject("test");获取Json数据内容,即{\"api\":\"2.1\",\"args\":[{\"tit\":\"test001\",\"val\":\"测试1\"},{\"tit\":\"test002\",\"val\":\"测试2\"}]}JSONObject json = (JSONObject) object.get("respon");2.最简单的解析是json格式也为最简单的key-value形式
此时只需json.getString(key值),如获取api,只需json.getString(api);
3.但是很多json都是json数组和json对象一起的,而且存在很多key值,此时我们需要解析时与实体类对应,因为会去填充相同名称的属性。注:在与实体类对应时,如果实体类中有的属性而Json字符串没有的,会默认为null,如果Json字符串中有而实体类中没有的,不做处理。
①Json对象的:使用JSONObject.parseObject
如首先创建一个实体类apiModel,内含属性api,首先获取api的值:String apiStr=json.getString("api");与实体类对应:apiModel a=JsonObject.parseObject(apiStr,apiModel.Class);②Json数组的:使用JSONArray.parseArray(返回List)
如首先创建一个实体类argsModel,内含属性获取JsonArray数组JSONArray specialCateArray = json.getJSONArray("args");与实体类对应:List<argsModel> argsList=new ArrayList<argsModel>();
argsList=JSONArray.parseArray(specialCateArray.toJSONString(),argsModel.class);4.还有一种情况是,key和value值比较多,我们只想按照key-value的方式解析存表,或是不知道key值的情况,也就是单独获取json字符串中的key值或value值比如以上例子仅解析为args=[{"val":"测试1","tit":"test001"},{"val":"测试2","tit":"test002"}],api=2.1Set<Entry<String, Object>> entrySet=json.entrySet();
for(Entry<String, Object> entry:entrySet){
System.out.print(entry.getKey()+"="+json.getString(entry.getKey())+"\n");
}注:此文章是本人学习的一点小笔记和总结,若发现有问题欢迎指出,谢谢~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: