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

java

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

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

 1 {

2 "translation": [

3 "爱"

4 ],

5 "basic": {

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

7 "phonetic": "lʌv",

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

9 "explains": [

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

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

12 "vi. 爱",

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

14 ]

15 },

16 "web": [

17 {

18 "value": [

19 "爱情",

20 "爱",

21 "爱"

22 ],

23 "key": "Love"

24 },

25 {

26 "value": [

27 "无尽的爱",

28 "蓝色生死恋",

29 "不了情"

30 ],

31 "key": "Endless Love"

32 },

33 {

34 "value": [

35 "早恋",

36 "青春期恋爱",

37 "初恋"

38 ],

39 "key": "puppy love"

40 }

41 ]

42 }

 

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

         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\"}]}";


       

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

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

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

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

5 for(int i = 0 ;i<tr.size();i++){ //对数组元素进行遍历

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

7 }

8 }

9

10 //basic中有数组也有元素

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

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

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

14

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

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

17

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

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

20 for(int i = 0;i<explain.size(); i++){ //对数组元素进行遍历

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

22 }

23 }

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

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

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

27 for(int i = 0; i<web.size() ; i++ ){ //但是对象中又嵌套着数组

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

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

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

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

32 }

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

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

35 for(int x = 0 ; x<value.size() ;x++ ){ //遍历对象中嵌套的数组

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

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

38 System.out.print(";");

39 }

40 }

41 }

42 System.out.println();

43 }

44 }

 

 

 

到这里就解析完啦!

以上是 用JAVA进行Json数据解析(对象数组的相互嵌套) 的全部内容, 来源链接: utcz.com/z/390119.html

回到顶部