解析复杂JSON数据

解析复杂的JSON数据

例:
{“result”:
[
{“score”:0.701022,“root”:“人物-人物特写”,“keyword”:“美女”,“baike_info”:
{“baike_url”:“http://baike.baidu.com/item/%E7%BE%8E%E5%A5%B3/109596”
,“image_url”:“http://imgsrc.baidu.com/baike/pic/item/91529822720”
+ “e0cf3acdfc0280046f21fbe09aa3d.jpg”,“description”:“美女是一个汉语词汇,拼音是:měi nǚ,释义:容貌姣好、仪态优雅的女子。中国古代关于美女的形容词和诗词歌赋众多,形成了丰富的美学资料。
}
},
{“score”:0.516248,“root”:“商品-穿戴”,“keyword”:“上衣”,“baike_info”: {“baike_url”:“http://baike.baidu.com/item/%E4%B8%8A%E8%A1%A3/10200813”,“image_url”:“http://imgsrc.baidu.com/baike/pic/item/63d9f2d3572c11df054fe42b6d2762d0f703c218.jpg”,“description”:”[词目]上衣[拼音]shàng yī[英文] Tops;Coat;Jacket[解释]1.外衣。2.上身穿的衣服。3.上衣的分类有学生装、军便装、夹克衫、两用衫、T恤等等类型。穿于人体上身的常用服装。一般由领、袖、衣身、袋4部分构成,并由此4部分的造型变化形成不同款式。4.传统服饰。外衣。此称始于汉。《论语·乡党》\u201c当暑袗絺绤,必表而出之\u201d,何晏集解引孔安国曰:\u201c暑则单服。絺绤,葛也。"
}
},{“score”:0.329718,“root”:“商品-服装”,“keyword”:“吊带睡衣”,“baike_info”:
{}
},{“score”:0.029778,“root”:“人物-人物特写”,“keyword”:“人物特写”,“baike_info”:
{}
}
],
“log_id”:3870743702425521491,“result_num”:5}
在这里插入图片描述
这是一个json串 我用不同的颜色将他分成多层
简单的json串我们可以直接通过 getString(字段名)来直接获取对应数据;
n层的串就相当于一个n层的k-v对我们不能直接用getString()取出来 因为里面每一层都是一个 n-1层的json串
需要先利用 getJSONArray(“字段名”’);将里层的所有数据放到一个JSONObject中
然后再利用getString(字段名)获取数据
如果数据在下一层 则继续利用 getJSONArray 将下一层的json提取出来
然后再利用 getString(字段名)获取。
比如 我们要取上面json串中的 “score”:0.701022.

//该json变量名为 res  假定所有v都是字符串

JSONArray jsonArray = res.getJSONArray("result");
//拆最外层 将最外层数据存储到 jsonArray 中

JSONObject jsonObject = jsonArray.getJSONObject(0);
//我们发现该json串最外层的第一个字段值是一个数组,我们通过getJSONArray把这个数组放到JSONArray中
//然后我们利用getJSONObject(0)将这个数组中的 0就是下标的意思 代表这个数组中第一个json串。
String score = jsonObject .getString("score");
//这样我们就已经将0.7201022放到score中了

// 如果我们想要取上面baike_url对应的v我们需要继续拆json串
JSONObject jsonObject2 = jsonObject.getJSONObject("baike_info");
/*这样我们就相当于将 {“baike_url”:“http://baike.baidu.com/item/%E7%BE%8E%E5%A5%B3/109596”
“image_url”:“http://imgsrc.baidu.com/baike/pic/item/91529822720”
+ “e0cf3acdfc0280046f21fbe09aa3d.jpg”,“description”:“美女是一个汉语词汇,拼音是:měi nǚ,释义:容貌姣好、仪态优雅的女子。中国古代关于美女的形容词和诗词歌赋众多,形成了丰富的美学资料。  
}  这些数据以一个心得json串存放到了jsonObject2中 
*/
String baike_url = jsonObject2.getString("baike_url");
//这样我们就获取到了第三层的数据  如果想要得到第四层或者等过层的数据只需要一直jsonArray.getJSONObject(下一个json串名) 直到将你要获取的字段所咋的层解析到一个jsonObject中 然后 通过 getString()方法获取指定字段数据就好了




/*
*注: JSONArray  中存储了多个json串  并列关系+嵌套关系
*     JSONObject 中存储了一个json串  嵌套关系
*     获取下一个json串都是 通过getJSONObject()方法 但是参数 不同  
*     JSONArray参数是json串在这一组数据中的下标从零开始
*     JSONObject参数是json串的字段名通过 k获取
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值