java 解析json嵌套_使用Java进行Json数据的解析(对象数组的相互嵌套)

本文介绍如何使用Java解析包含嵌套对象和数组的JSON数据,以英语翻译APP为例,详细展示了如何处理JSON的translation、basic和web等字段,包括获取字符串、数组元素及其值的过程。
摘要由CSDN通过智能技术生成

这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下!

假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果

{

"translation": [

"爱"

],

"basic": {

"us-phonetic": "lʌv",

"phonetic": "lʌv",

"uk-phonetic": "lʌv",

"explains": [

"n. 恋爱;亲爱的;酷爱;喜爱的事物",

"vt. 喜欢;热爱;爱慕",

"vi. 爱",

"n. (Love)人名;(英)洛夫"

]

},

"web": [

{

"value": [

"爱情",

"爱",

"爱"

],

"key": "Love"

},

{

"value": [

"无尽的爱",

"蓝色生死恋",

"不了情"

],

"key": "Endless Love"

},

{

"value": [

"早恋",

"青春期恋爱",

"初恋"

],

"key": "puppy love"

}

]

}

我们把数据定义为一个字符串,加入转义字符之后就成了这样,有点乱是吧,所以我们根据上图分析就好啦。

Json数据说白了就是对象和数组的相互嵌套,那么我们开始吧!

String st = "{\"translation\":[\"爱\"],\"basic\":{\"us-phonetic\":\"lʌv\",\"phonetic\":\"lʌv\",\"uk-phonetic\":\"lʌv\",\"explains\":[\"n. 恋爱;亲爱的;酷爱;喜爱的事物\",\"vt. 喜欢;热爱;爱慕\",\"vi. 爱\",\"n. (Love)人名;(英)洛夫\"]},\"query\":\"love\",\"errorCode\":0,\"web\":[{\"value\":[\"爱情\",\"爱\",\"爱\"],\"key\":\"Love\"},{\"value\":[\"无尽的爱\",\"蓝色生死恋\",\"不了情\"],\"key\":\"Endless Love\"},{\"value\":[\"早恋\",\"青春期恋爱\",\"初恋\"],\"key\":\"puppy love\"}]}";

JSONObject str = JSONObject.fromObject(st); //json数据的最外层肯定是一个对象,参数为字符串

//对象str又分为3部分:translation,basic,web

if(str.has("translation")){

JSONArray tr = str.getJSONArray("translation"); //translation是一个json数组

for(int i = 0 ;i

System.out.println(tr.getString(i)); //因为元素的值是String类型的所以忽的值的方法是getString(index)

}

}

//basic中有数组也有元素

if(str.has("basic")){

JSONObject us = str.getJSONObject("basic"); //对元素进行解析,并输出元素的值

System.out.print("美:[" + us.getString("us-phonetic") + "]\t");

JSONObject uk = str.getJSONObject("basic");

System.out.print("英:[" + us.getString("uk-phonetic") + "]\n");

JSONObject basic = str.getJSONObject("basic"); //先获得basic对象

JSONArray explain = basic.getJSONArray("explains");  //再获得basic对象下的explains数组

for(int i = 0;i

System.out.println(explain.getString(i));

}

}

if(str.has("web")){ //web是一个数组,每个数组元素又是三个Json对象

System.out.println("拓展:");

JSONArray web = str.getJSONArray("web");

for(int i = 0; i

String t = web.getString(i); //遍历过程将web数组元素赋给String型变量

JSONObject we = JSONObject.fromObject(t); //通过String又得到每个元素的对象

if(we.has("key")){

System.out.print(we.getString("key")+"\t"); //得到对象中的元素

}

if(we.has("value")){

JSONArray value = we.getJSONArray("value");

for(int x = 0 ; x

System.out.print(value.getString(x)); //得到数组元素的值

if(x

System.out.print(";");

}

}

}

System.out.println();

}

}

到这里就解析完啦!

以上这篇使用Java进行Json数据的解析(对象数组的相互嵌套)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值