2014-06-07 91 views
0

我有一個JSON響應,但是這種標準格式?解析JsonArray無鑰匙在android

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}] 

我怎麼能解析它在android中?

new JSONObject(result.toString()) 

拋出異常!

06-07 11:45:54.943: W/System.err(10310): at org.json.JSON.typeMismatch(JSON.java:111) 
06-07 11:45:54.943: W/System.err(10310): at org.json.JSONObject.<init>(JSONObject.java:158) 
06-07 11:45:54.943: W/System.err(10310): at org.json.JSONObject.<init>(JSONObject.java:171) 
+0

是它是有效的,你可以粘貼您的JSON在http://jsonlint.com/用於檢查驗證 –

+1

您的JSON是一個數組不是一個對象,所以你需要'新JSONArray(result.toString());' –

回答

2

我有一個JSON響應,但這種標準格式?

它會在開始時沒有<,最後沒有。所以:

new JSONObject(result.toString().substring(1, result.length() - 2)); 

或更可能:

new JSONArray(result.toString().substring(1, result.length() - 2)); 

,因爲它的頂層是一個數組。

既然你已經刪除了<>你原本有:

由於它的頂層是一個數組,你可能想JSONArray,不JSONObject

new JSONArray(result.toString()); 
+0

你correct.but問題不是< and >;謝謝 –

+0

@Mimad:在哪些方面不是那些?那些使它無效JSON,所以你不能解析它。沒有他們,它*是*有效的JSON,你可以解析它。 (另外:你可能想'新的JSONArray'而不是'new JSONObject',因爲它是一個數組,而不是一個對象,我已經添加了這個。) –

+0

這是我在登錄時遇到的錯誤:D –

1

這是JSONarray

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}] 

嘗試解析

new JSONArray(result.toString()) 
1

首先分配你的JSON數組這樣

JSONArray jsar=new JSONArray(result); 

然後解析對象這樣

for(int i=0;i<jsar.length;i++) 
{ 
JSONObject jsobj=new JSONObject(jsar[i]); 

String strcode=jsobj.get("code"); 

String strrate=jsobj.get("rate"); 

String strtitle=jsobj.get("title"); 

String strsubtitle=jsobj.get("subtitle"); 
} 

希望這將幫助你吧。