2014-03-25 15 views
0

沒有價值,我有字符串對象:JSONExeption爲

String qwe = "{\"myObj\":" + "{" + "\"first\":123," + "\"second\":111.0}" +"}";

而且我的代碼

private static final String TAG_FIRST = "first"; 
res = new JSONObject(qwe); 
Double q1 = res.getDouble(TAG_FIRST); 

我有exeption 「爲第一個沒有價值」。

我做錯了什麼?

ps對不起我的英語不好。 最好的問候

+1

除了T.J. Crowder的答案:在創建更復雜的對象時,可以檢查生成的JSON是否有效http://jsonlint.com/ – Droidman

回答

5

你的JSON定義了一個物件myObjmyObj的值是一個不同的對象。 對象有一個first屬性。這可能是更清楚,如果我們看一下剛纔的JSON和使用縮進:

{ 
    "myObj": { 
     "first": 123, 
     "second": 111.0 
    } 
} 

所以首先你必須得到myObj對象,然後從得到first

private static final String TAG_MYOBJ = "myObj"; 
private static final String TAG_FIRST = "first"; 
res = new JSONObject(qwe); 
JSONObject myObj = res.getJSONObject(TAG_MYOBJ); 
Double q1 = myObj.getDouble(TAG_FIRST); 

或者,如果你並不想有外層,你可能會想你的JSON字符串,看起來像這樣:

String qwe = 
+ "{" 
+ "\"first\":123," 
+ "\"second\":111.0" 
+"}"; 

該字符串包含此JSON:

{ 
    "first": 123, 
    "second": 111.0 
} 

...這將與您的原始代碼正確工作(在此複製):

private static final String TAG_FIRST = "first"; 
res = new JSONObject(qwe); 
Double q1 = res.getDouble(TAG_FIRST); 
+0

謝謝,我記得它。 – Max