![](/img/trans.png)
[英]How to sort JSONArray of JSONObject which contain another JSONObject?
[英]parse Json String which could contain a JsonArray or just a 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 。 通過閱讀類的方法列表可以看到,它具有一些方法來告訴您它是對象,數組還是其他對象。 然后,您可以將對象放入適當的子類( JsonObject
, JsonArray
等)中,也可以使用提供的便捷方法為您完成此操作。
從那里,您可以檢查對象或數組並獲取屬性,元素,原始值等。這些也將以JsonElement的形式出現。
如果您使用的是JSONLib或Gson,則這兩個庫都有一個名為JsonElement的抽象類。 該類可以回答您是JsonObject還是JsonArray(#isJsonArray()#isJsonObject()方法)。 然后,您可以正確地投射它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.