2014-05-24 60 views
0

我從這個鏈接解析JSON數據:異常而解析JSON數據

http://twyst.in/api/v1/near/30/30

由於數據太大,我張貼只是(問題)相關的數據在這裏:

{ 「info」:「[{\」outlet \「:{\」__ v \「:1,\」_ id \「:\」5316d59326b019ee59000026 \「,\」photos \「:[],\」twyst_meta \「: {\ 「recommend_list \」:[],\ 「評論\」:[]},\ 「outlet_meta \」:{\ 「鏈接\」:[],\ 「狀態\」:\ 「活性\」,\」帳戶\ 「:[\」 531574eeae738d654c00000a \ 「\ 」535a1a1e827651ca03000122 \「]},\ 」屬性\「:{\ 」dine_in \「:真,\ 」室外\「:真,\」 air_conditioning \「:不可用\」,\「停車\」:\「可用\」,\「保留\」:\「不需要\」,\「wifi \」:\「不可用\」,\「標籤\「:[\」Pizza \「,\」Pasta \「,\」Italian \「,\」Galleria \「,」DLF階段4 \「],\」payment_options \「:[\」cash \ ,\ 「AMEX \」,\ 「簽證\」 \ 「主\」],\ 「美食\」:[\ 「意大利\」,\ 「披薩\」,\ 「冰淇淋\」],\「定時\ 「:\」11 AM - 11 PM \「,\」cost_for_two \「:{\」min \「:3,\」max \「:4}},\」links \「:{\」other_urls \「: [],\「youtube_url \」:\「\」,\「twitter_url \」:\「\」,\「facebook_url \」:\「https://www.facebook.com/pages/Crusty-gourmet-pizza-more/390843954384130 \」,\「website_url \」:\「\」}, 「接觸\」:{\ 「電子郵件\」:{\ 「電子郵件\」:\ 「[email protected] \」,\ 「人\」:\ 「\」} \ 「電話\」:{\」號\ 「:\」 \ 「\ 」座機\「:\ 」02355156616 \「,\ 」reg_mobile \「:[{\ 」_ ID \「:\ 」4639320000e4532779b17de7 \「,\ 」NUM \「:\」 9134000410 \「}

這不是JSON數據的結尾,它繼續...

但是當執行下面的代碼行時,我得到一個JSONException。 e.printStackTrace()方法告訴我有typeMismatch錯誤。

 JSONObject object = new JSONObject(str);  //1 
     JSONArray array = object.getJSONArray("info"); //2 

我試圖用下面的代碼替換線路2:

 JSONObject newObject = object.getJSONObject("info"); 

但在這裏我也遇到同樣的問題。

我檢查了完整的數據,它是正確的,沒有語法錯誤。 有人可以幫我解決這個問題嗎?在啓動JSONArray之前是否存在雙引號是這個問題的根源?

謝謝。

+0

我想會的。它會將其解釋爲一個字符串。 – Mgamerz

+0

你是什麼意思?雙引號的存在將是一個問題,或者它會解析,我不是正確的方式嗎? – Rajat

回答

2

info不是數組或對象。它是一個字符串,它恰好包含另一個數組的JSON編碼表示。您將獲得該字符串並運行它通過第二JSON解碼通過:

JSONArray array = new JSONArray(object.getString("info")); 
+0

這就是我想在上面的評論中說的。移動速度太慢:) – Mgamerz

+0

@Rajat數組的第一個元素是一個對象,所以你可以調用數組中的'getJSONObject(0)'來獲得對象,然後使用它的鍵,如果這就是你的意思。 – Boann

+0

@Boann:好的,我明白了。我最初誤解了。 – Rajat

0
JSONObject json; 
Object  info; 
JSONArray infoJsonArray; 
JSONObject infoObject; 
json = new JSONObject(str); 

Object info= json.get("info"); 
if (info instanceof JSONArray) { 
// It's an array 
infoJsonArray = (JSONArray)info; 
} 
else if (info instanceof JSONObject) { 
// It's an object 
infoObject = (JSONObject)info; 
} else { 
// It's something else, like a string or number 
}