gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章使用Java进行Json数据的解析(对象数组的相互嵌套)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

这段时间我们在做一个英语翻译软件的小小小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数据的解析(对象数组的相互嵌套)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

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

最后此篇关于使用Java进行Json数据的解析(对象数组的相互嵌套)的文章就讲到这里了,如果你想了解更多关于使用Java进行Json数据的解析(对象数组的相互嵌套)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com