在android(java)中解析json对象时,getJSONArray返回null

时间:2017-03-11 08:11:56

标签: android json

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数据,我试图提取所有字段(id,main,毛毛雨等),但当我尝试Log.d时,根JSON对象内的JSONArray是空的。

3 个答案:

答案 0 :(得分:0)

您的JSON无效:

试试这个:

?ActiveWorkBook.Name

您可以使用This

检查有效的JSON

答案 1 :(得分: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();
    }

答案 2 :(得分:0)

首先你忘了把结束单引号用于id:

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

第二,当你使用“obj.put(”name“,”...“}”时,JSONObject将值作为字符串获取其他任何内容。如果你想使用obj.put(Json数组值),你应该转换(字符串值)为(json数组值)befor使用On“obj.put”:

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