2013-05-07 44 views
7

我打一個服務,有時取回這樣的事情:如何判斷返回是JSONObject還是使用JSON簡單(Java)的JSONArray?

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

,有時得到的回報是這樣的:

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

我怎麼告訴我我得到?他們都計算爲字符串,當我做的getClass(),但如果我嘗試這樣做:

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

在第二種情況下我得到一個異常

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

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

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

+0

檢查字符串是否以'[]'開始和結束應該非常簡單。你有什麼嘗試? – ApproachingDarknessFish 2013-05-07 02:46:32

+0

我可以告訴它是否以[]結尾,但問題是我得到一個字符串「[{\」param1 \「...},{...}]」,我似乎無法將其轉換再次放入數組中。 – PixMach 2013-05-07 03:21:28

回答

19

簡單的Java:

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

,如果你想避免解析錯誤類型JSON的開銷你也可以測試,如果(聲稱)JSON有[{啓動,但要小心。領先的空白。

+0

謝謝。這回答了我的問題。現在要弄清楚它的其餘部分:) – PixMach 2013-05-07 04:10:38

+0

謝謝Budy。 :) – Krishna 2014-01-18 07:43:58

相關問題