java解析多层嵌套json字符串
生活随笔
收集整理的這篇文章主要介紹了
java解析多层嵌套json字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java解析多層嵌套json字符串
java分別解析下面兩個json字符串
package jansonDemo;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;public class TestJSON {/*** JSON實際上也是鍵值對("key":"value")* key 必須是字符串,value 可以是合法的 JSON 數據類型(字符串, 數字, 對象, 數組, 布爾值或 null)* value如果是字符串,用jsonobj.getString("key")獲取* value如果是數 字,用jsonobj.getIntValue("key"),jsonobj.getFloatValue("key"),jsonobj.getInteger("key")等基本數據類型及其包裝類的方法獲取* value如果是布爾值,用jsonobj.getBoolean("key"),jsonobj.getBooleanValue("key")獲取* value如果是數 組,用jsonobj.getJSONArray("key")獲取* value如果是Object對象,用jsonobj.get("key"),獲取* value如果是JSONObject對象,用jsonobj.getJSONObject("key")獲取*//*** 該方法用于將已有的json字符串轉換為json對象,并取出該對象中相應的key對應的value值* 將已有的字符串轉換成jsonobject,用JSON.parseObject(jsonStr)方法* json中只要是{}就代表一個JSONObject,[]就代表一個JSONArray* 獲取JSONObject對象用JSONObject jsonobject.getJSONObject("key")方法* 獲取JSONArray對象用JSONObject jsonobject.getJSONArray("key")方法*/private static void strWritedToJSONObject() {//以下是一個json對象中嵌套一個json子對象String myJsonObj = "{\n" +" \"name\":\"runoob\",\n" +" \"alexa\":10000,\n" +" \"sites\": {\n" +" \"site1\":\"www.runoob.com\",\n" +" \"site2\":\"m.runoob.com\",\n" +" \"site3\":\"c.runoob.com\"\n" +" }\n" +"}";JSONObject jsonobj = JSON.parseObject(myJsonObj); //將json字符串轉換成jsonObject對象/***獲取JSONObject中每個key對應的value值時,可以根據實際場景中想得到什么類型就分別運用不到的方法***/System.out.println(jsonobj.get("name")); //取出name對應的value值,得到的是一個objectSystem.out.println(jsonobj.getString("name")); //取出name對應的value值,得到的是一個StringSystem.out.println(jsonobj.getIntValue("alexa")); //取出name對應的value值,得到的是一個intSystem.out.println(jsonobj.get("sites")); //取出sites對應的value值,得到的是一個objectSystem.out.println(jsonobj.getString("sites"));System.out.println(jsonobj.getJSONObject("sites")); //取出sites對應的value值,得到一個JSONObject子對象System.out.println(jsonobj.getJSONObject("sites").getString("site2")); //取出嵌套的JSONObject子對象中site2對應的value值,必須用getJSONObject()先獲取JSONObject/*** 以下是一個json對象中包含數組,數組中又包含json子對象和子數組*/String myJsonObj2 = "{\n" +" \"name\":\"網站\",\n" +" \"num\":3,\n" +" \"sites\": [\n" +" { \"name\":\"Google\", \"info\":[ \"Android\", \"Google 搜索\", \"Google 翻譯\" ] },\n" +" { \"name\":\"Runoob\", \"info\":[ \"菜鳥教程\", \"菜鳥工具\", \"菜鳥微信\" ] },\n" +" { \"name\":\"Taobao\", \"info\":[ \"淘寶\", \"網購\" ] }\n" +" ]\n" +"}";JSONObject jsonobj2 = JSON.parseObject(myJsonObj2); //將json字符串轉換成jsonObject對象System.out.println(jsonobj2.get("sites"));System.out.println(jsonobj2.getString("sites"));System.out.println(jsonobj2.getJSONArray("sites")); //取出sites對應的value值,得到一個JSONOArray對象//System.out.println(jsonobj2.getJSONObject("sites")); 不能用該方法,因為sites是一個JSONOArray對象//取出json對象中sites對應數組中第一個json子對象的值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0)); //得到結果:{"name":"Google","info":["Android","Google 搜索","Google 翻譯"]}System.out.println(jsonobj2.getJSONArray("sites").get(0));System.out.println(jsonobj2.getJSONArray("sites").getString(0));//取出json對象中sites對應數組中第一個json子對象下面info對應的嵌套子數組值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0).getJSONArray("info")); //得到結果:["Android","Google 搜索","Google 翻譯"]//取出json對象中sites對應數組中第一個json子對象下面info對應的嵌套子數組中第二個值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0).getJSONArray("info").getString(1)); //得到結果:Google 搜索//依次取出json對象中sites對應數組中的值JSONArray array = jsonobj2.getJSONArray("sites");getJsonArrayItem(array);//依次取出json對象中sites對應數組中第二個json子對象下面info對應的嵌套子數組值JSONArray arr = jsonobj2.getJSONArray("sites").getJSONObject(1).getJSONArray("info");getJsonArrayItem(arr);}/*** 手動添加對象到一個JSONObject*/private static void writeStrToJSONObject() {JSONObject jsonObject = new JSONObject();jsonObject.put("name","tom");jsonObject.put("age",20);JSONArray jsonArray = new JSONArray();JSONObject jsonArrayObject1 = new JSONObject();jsonArrayObject1.put("name","alibaba");jsonArrayObject1.put("info","www.alibaba.com");JSONObject jsonArrayObject2 = new JSONObject();jsonArrayObject2.put("name","baidu");jsonArrayObject2.put("info","www.baidu.com");jsonArray.add(jsonArrayObject1);jsonArray.add(jsonArrayObject2);jsonObject.put("sites",jsonArray);System.out.println(jsonObject);}/*** 將字符串轉為JSONArray*/private static void strToJsonArray() {String arrayStr = "[\n" +" {\n" +" \"name\":\"alibaba\",\n" +" \"info\":\"www.alibaba.com\"\n" +" },\n" +" {\n" +" \"name\":\"baidu\",\n" +" \"info\":\"www.baidu.com\"\n" +" }\n" +" ]";JSONArray array = JSON.parseArray(arrayStr);System.out.println(array);}/*** 依次取出JSONArray中的值*/private static void getJsonArrayItem(JSONArray array) {for (int i=0; i<array.size(); i++) {System.out.println(array.get(i));}}//測試類public static void main(String[] args) {strWritedToJSONObject();//writeStrToJSONObject();//strToJsonArray();}}總結
以上是生活随笔為你收集整理的java解析多层嵌套json字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-router详尽:编程式导航、路
- 下一篇: rust(10)-函数指针