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

在android(java)中解析json对象时,getJSONArray返回null,android,json,Android,Json,上面是我的JSON数据,我试图提取所有字段(id、main、drizzle等),但当我尝试记录时,根JSON对象中的JSONArray为空。d您的JSON无效: 试试这个: JSONObject obj = new JSONObject(); obj.put("weather", "[{'id: 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]"); JSONArray arr = o

上面是我的JSON数据,我试图提取所有字段(id、main、drizzle等),但当我尝试记录时,根JSON对象中的JSONArray为空。d

您的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之后忘记了一个,它就可以工作了

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

首先,您忘记了将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();
    }
第二,当您使用“obj.put”(“name”、“…”})时,JSONObject将值作为字符串获取,而不是其他内容。如果您希望使用obj.put for(Json数组值),则应在“obj.put”之前将(字符串值)转换为(Json数组值):


JSONObject obj=new JSONObject();JSONArray jarr=null;尝试{obj.put(“weather”),[{id:300,main:'ds',Drizzle:'www2',description:'dfd'}]”;jarr=obj.getJSONArray(“weather”);}catch(JSONException e){e.printStackTrace();}最后{Log.d(“rj”,jarr.toString();}我想,你应该在“天气”之后加上冒号
,而不是逗号
"[{'id': 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]".
String valueString="[{'id': 300,'main': 'Drizzle','description': 'light intensity drizzle','icon': '09d'}]"; 
JSONArray valueJsonArray=new JSONArray(valueString);
obj.put("weather",valueJsonArray);