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

2025-05-29 0 77

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42
{

"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数据说白了就是对象数组的相互嵌套,那么我们开始吧!

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47
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<tr.size();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<explain.size(); 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<web.size() ; 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<value.size() ;x++ ){ //遍历对象中嵌套的数组

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

if(x<value.size()-1){

System.out.print(";");

}

}

}

System.out.println();

}

}

到这里就解析完啦!

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

原文链接:http://www.cnblogs.com/zz-1120-wtenlb/archive/2017/08/22/7414430.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 使用Java进行Json数据的解析(对象数组的相互嵌套) https://www.kuaiidc.com/115170.html

相关文章

发表评论
暂无评论