Java如何对Json数据进行解析

下面小编就为大家带来一篇使用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<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数据进行解析的详细内容,更多请关注其它相关文章!

有多远,走多远,把足迹连成生命线。

Java如何对Json数据进行解析

相关文章:

你感兴趣的文章:

标签云: