簡體   English   中英

如何使用JSON-simple(Java)判斷返回是JSONObject還是JSONArray?

[英]How to tell if return is JSONObject or JSONArray with JSON-simple (Java)?

我正在尋求服務,有時會得到這樣的東西:

{ "param1": "value1", "param2": "value2" }

有時會像這樣得到回報:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]

我怎么知道我得到了什么? 當我執行getClass()時,它們都評估為String但是如果我嘗試這樣做:

json = (JSONObject) new JSONParser().parse(result); 

在第二種情況下,我得到一個例外

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

怎么避免這個? 我想知道如何檢查我要回來的。 (第一種情況有時候會有[] ,所以我不能做索引,而且我想要一種更清潔的方式,而不僅僅是檢查第一個字符。

必須有某種方法來檢查這個?

簡單的Java:

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) {
    JSONObject jo = (JSONObject) obj;
} else {
    JSONArray ja = (JSONArray) obj;
}

您還可以測試(聲稱的)JSON是否以[或者{如果您想避免解析錯誤類型的JSON的開銷)開始。 但要注意領先的空白。

雖然它與上面的類似,但它們不是JSONParser的默認構造函數。 出現錯誤是:構造函數JSONParser()未定義

請改用它

JsonElement jsonElement = new JsonParser().parse(jsonString);
if (jsonElement.isJsonArray()) {
    //Your Code
} else {
    //Your Code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM