2012-03-07 137 views
0

我有這樣的JSON字符串:Java的JSON代碼拋出異常

[{"user_id":"123","email":"[email protected]","lat":"40.748329","lng":"-73.996223", 
        "first_name":"Alex","last_name":"Genadinik"}] 

這個Java代碼:

  try 
      { 
       JSONObject obj = new JSONObject(result); 

       Log.d("NAME: " , "test: " + obj.getString("first_name"));  

      } 
      catch (Exception e) 
      { 
       Log.d("JSON ERRORZ: " , "some crap happened " + e.getMessage()); 
      } 

但它拋出這個錯誤:

[{"last_name":"Genadinik","first_name":"Alex","lng":"-73.996223","user_id":"1","email":"[email protected]","lat":"40.748329"}] of type org.json.JSONArray cannot be converted to JSONObject 

任何想法如何我可以解決這個問題,只需在JSON中提取值?

謝謝!

回答

2

這JSON字符串是一個數組,不對象,而不是方括號開頭(look here) 。改爲使用JSONArray,並從中提取JSONObject

+0

但是,如果我使用JSONArray對象,那裏的函數是什麼讓我的價值?我沒有看到任何適用於API的內容 - 謝謝! – GeekedOut 2012-03-07 19:18:58

+0

看看getJSONObject。 – MByD 2012-03-07 19:21:15

+0

會是這樣的:\t JSONArray obj = new JSONArray(result); \t \t \t \t \t JSONObject o = obj.getJSONObject(1); \t \t \t \t \t Log.d(「NAME:」,「test:」+ o.getString(「first_name」)); – GeekedOut 2012-03-07 19:27:45

3

錯誤說明了一切。你傳遞一個數組,它期望一個對象。

要解決您的錯誤,您應該從JSON字符串中刪除方括號([])。

一個目的看起來像:

{ 
    key: 'value' 
} 

凡作爲陣列看起來像:

[ 
    { key: 'value' }, 
    1, 
    'some string' 
] 
+0

但是,如果我使用JSONArray對象,那裏的函數是什麼讓我的價值?我沒有看到任何適用於API的內容 - 謝謝! – GeekedOut 2012-03-07 19:21:13

+0

你可以使用'getJSONObject(..)'方法:)。 – Kevin 2012-03-07 19:24:10