我的Json字符串可能是以下兩種格式之一,我該如何解析它們,因爲我不知道它是JsonArray還是JsonObject。解析Json字符串,其中可能包含JsonArray或只是JsonObject
{"a":{"a":"a","a":"a","a":"a","a":"a"}}
{"a":[{"a":"a","b":"a","a":"a","a":"a"},{"b":"b","b":"b","b":"b","b":"b"}]}
謝謝。
我的Json字符串可能是以下兩種格式之一,我該如何解析它們,因爲我不知道它是JsonArray還是JsonObject。解析Json字符串,其中可能包含JsonArray或只是JsonObject
{"a":{"a":"a","a":"a","a":"a","a":"a"}}
{"a":[{"a":"a","b":"a","a":"a","a":"a"},{"b":"b","b":"b","b":"b","b":"b"}]}
謝謝。
示例代碼給你解析標記流
這就是所謂的與初始令牌,
的nextToken(T)檢索從流的下一個標記的想法。
parseJsonElement遞歸處理樹性質。
public Object parseJsonElement(Token t){
if (t.isArrayStart()){
// is an array so create list and put child elements into list
List list = new List();
t = nextToken(t);
while (!t.isArrayEnd()){
list.add(parseJsonElement(t));
}
return list;
}else if (t.isObjectStart()){
// is an object so return parsed object
return parseJsonElement(t);
}else // handle something else
}
假設你正在使用Gson解析您的JSON,構建一個JsonParser。其parse
方法的返回類型爲JsonElement。正如你通過閱讀類的方法列表所看到的,它有方法告訴你它是一個Object,Array還是其他類。然後,您可以將對象放入適當的子類(JsonObject
,JsonArray
,無論)中,還是使用提供的便捷方法爲您執行此操作。
從那裏,你可以檢查對象或數組,並獲取屬性,元素,原始值等。這些也將作爲JsonElement出現。
如果您使用的是JSONLib或Gson,那麼這兩個庫都有一個名爲JsonElement的抽象類。如果它是JsonObject或JsonArray(#isJsonArray()#isJsonObject()方法),那麼該類有能力回答您。然後,您可以正確投射它。