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

这段时间我们在做一个英语翻译软件的小小小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();

}

}

到这里就解析完啦!

原文:http://www.cnblogs.com/zz-1120-wtenlb/p/7414430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值