2017-03-11 33 views
-1
JSONObject obj = new JSONObject(); 

obj.put("weather", "[{'id: 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]"); 

JSONArray arr = obj.getJSONArray("weather"); 
JSONObject obj2 = arr.getJSONObject(0); 

以上是我的JSON數據,我試圖提取根JSON對象中的所有字段(ID,主,毛毛雨等),但JSONArray是空的,當我嘗試到Log.dgetJSONArray retruns空當的Android(Java)的解析JSON對象

+0

的JSONObject的obj =新的JSONObject(); JSONArray jarr = null; (「weather」,「[{id:300,main:'ds',Drizzle:'ww2',描述:'dfd'}]」); jarr = obj.getJSONArray(「weather」); } catch(JSONException e){ e.printStackTrace(); } finally { Log.d(「rj」,jarr.toString()); } –

+0

我猜,你應該在''weather''而不是'逗號'之後冒號':' – Marat

回答

0

你的JSON無效:

試試這個:

{ 
    "weather":[ 
     { 
     "id":"300" 
     }, 
     { 
     "main":"Drizzle" 
     }, 
     { 
     "description":"light intensity drizzle" 
     }, 
     { 
     "icon":"09d" 
     } 
    ] 
} 

您可以使用檢查有效的JSON This

0

試試這個它的工作原理,你在第一次你忘了放完單引號ID

JSONObject obj = new JSONObject(); 

    try { 
     JSONArray Jarr=new JSONArray("[{'id': 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]"); 
     obj.put("weather",(Object)Jarr); 

     JSONArray arr = obj.getJSONArray("weather"); 
     JSONObject obj2 = arr.getJSONObject(0); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
0

後忘了一個「爲ID:

"[{'id': 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]". 

其次,當您使用‘obj.put(’名稱「,」...「}」,JSONObject以字符串的形式獲取值。如果你想使用obj.put爲(JSON數組值),應該轉換(字符串值)至(JSON數組值)befor用在 「obj.put」:

String valueString="[{'id': 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]"; 
JSONArray valueJsonArray=new JSONArray(valueString); 
obj.put("weather",valueJsonArray);