[英]How to parse a two dimensional JSON Object in java
這是我的JSON數據
{
"field1" : [
{
"key1" : "1",
"key2" : "2"
}, {
"key1" : "1",
"key2" : "2",
"key3" : "3",
"key4" : "4"
}
],
"field2" : {
"key1" : "1",
"key2" : "2",
"key3" : "3",
"key4" : "4",
"key5" : "5"
},
"field3" : {
"key1" : "1"
}
}
這是我的代碼
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
Set arr = jsonObject.keySet();
Iterator iterator = arr.iterator();
Collection innerArray = jsonObject.values();
Iterator iterator1 = innerArray.iterator();
while (iterator.hasNext() && iterator1.hasNext()) {
System.out.println("key="+iterator.next().toString());
System.out.println("value="+ iterator1
.next().toString());
}
我需要這樣的輸出
field1
-------
key1 -->1
key2 -->2
field1
----------
key1 -->1
key2 -->2
key3 -->3
key4 -->4
field2
--------
key1 -->1
key2 -->2
key3 -->3
key4 -->4
key5 -->5
field3
------
key1 --> 1
電流輸出:
key=field3 value={"key1":"1"}
key=field2 value={"key4":"4","key3":"3","key5":"5","key2":"2","key1":"1"}
key=field1 value=[{"key2":"2","key1":"1"},{"key4":"4","key3":"3","key2":"2","key1":"1"}]
任何想法?
您可以進行一些更改,以完全按照所需的方式打印...下面的代碼應該會有所幫助。 此代碼是通用代碼,可用於任何JSON結構。
static void printRecursive(JSONObject obj) {
for(Object key:obj.keySet()) {
//System.out.println(obj.get(key.toString()).getClass().getSimpleName());
if(obj.get(key.toString()) instanceof JSONArray) {
JSONArray aobj = ((JSONArray)obj.get(key.toString()));
System.out.println(key.toString());
for(int i=0;i<aobj.length();i++) {
printRecursive(aobj.getJSONObject(i));
}
}
else
if(obj.get(key.toString()) instanceof JSONObject) {
System.out.println(key.toString());
printRecursive((JSONObject)obj.get(key.toString()));
}
else
System.out.println(key.toString()+" -> "+obj.get(key.toString()));
}
}
您需要添加一種可以遞歸使用的方法,以檢查值是JSONObject
還是JSONArray
。
例如:
public void outputResultsOfJson(String parentKey, Object obj) {
if (obj instanceof JSONObject) {
System.out.println(parentKey + " is an Object");
JSONObject jObj = (JSONObject)obj;
Iterator<?> keys = jObj.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
outputResultsOfJson(key, jObj.get(key));
}
} else if (obj instanceof JSONArray) {
System.out.println(parentKey + " is an Array");
JSONArray jArr = (JSONArray)obj;
for (int i = 0; i < jArr.length(); i++) {
outputResultsOfJson("#" + i, jArr.get(i));
}
} else {
System.out.println(parentKey + " is a String");
}
}
該函數將檢查對象或數組中索引中每個鍵的類型,並輸出其類型(對象,數組或字符串)。 使其適應您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.