2013-07-11 55 views
1

我有下面的示例JSON:的JSONObject到JSONArray以天爲鍵

{\"2013-05-30\":{\"available\":\"1\",\"bind\":0,\"info\":\"\",\"notes\":\"\",\"price\":\"\",\"promo\":\"\",\"status\":\"available\"}, 
\"2013-05-31\":{\"available\":\"1\",\"bind\":0,\"info\":\"\",\"notes\":\"\",\"price\":\"\",\"promo\":\"\",\"status\":\"available\"}, 
\"2013-06-01\":{\"available\":\"1\",\"bind\":0,\"info\":\"\",\"notes\":\"\",\"price\":\"\",\"promo\":\"\",\"status\":\"available\"}} 

我讀這爲一個字符串,然後將其解析成一個JSONObject,但我需要它是一個JSONArray。 我已經試過在將字符串轉換爲JSONArray之前,以編程方式添加「[」開頭的字符串和「]」,然後將其識別爲數組,但它仍然將其視爲單個對象(我似乎只有JSONArray(0))。

這是我嘗試分析jsonData爲一個數組:

try{ 
jArray = new JSONArray(resultString); 
for(int i=0;i<jArray.length();i++){ 
     JSONObject json_data = jArray.getJSONObject(i); 
     Log.i("log_4","Available: "+json_data.getString("available")+ 
     ", Bind: "+json_data.getString("bind")+ 
     ", Info: "+json_data.getString("info") + 
     ", Notes: "+json_data.getString("notes") + 
     ", Price: "+json_data.getString("price") + 
     ", Promo: "+json_data.getString("promo") + 
     ", Status: "+json_data.getString("status") 
     ); 
    } 
}catch(JSONException e){ 
Log.e("log_5", "Error parsing data "+e.toString()); 
} 

,這裏是在我不加[和]版本,因此解析它作爲一個JSONObject。

try { 
    jsonResponse = new JSONObject(resString); 
} catch (JSONException e) { 
    Log.e("log_3", "Error parsing data "+e.toString()); 
    } 

如何可以分離每一天(例如,「2013年5月30日」)轉換成一個不同的對象,與具有作爲鍵中的每個對象的日子的值?

非常感謝!

回答

1

而是在結尾處增加一個[在開始時和]的,試着用[}],然後產生一個JSONArray了它的最後一個實例替換的{第一個實例。

+1

我也試過,但後來我會有以下錯誤:'org.JSONException:未終止的數組在字符串14的字符串,這將是第一個':'。 –

+0

對不起,這是一個壞主意,那隻會創建一個android api不支持的JSON映射。你可以使用'JSONObject.keys()'來獲得一個'Iterator'到鍵。然後使用它迭代所有的鍵並獲取相應的JSON對象。這不會給你一個JSONArray,但你仍然可以像數組一樣迭代JSONObject。 – Ali

+0

您也可以嘗試使用'JSONObject.getNames(JSONObject)'這將返回'JSONObject'中變量名稱的'String []',然後可以使用它們來獲取JSONObjects。 – Ali