Android JSON解析

Android JSON解析,android,json,Android,Json,我有一个json响应: [{"id":"1","cat":"A","pic":"false","sector":"1"},{"id":"2","cat":"B","pic":"true","sector":"2"}] 我需要在android上解析它 我有以下代码: JSONObject obj = new JSONObject(response); JSONArray jsonArray = obj.getJSONArray(""); JSONObject jsonObject = jsonA

我有一个json响应:

[{"id":"1","cat":"A","pic":"false","sector":"1"},{"id":"2","cat":"B","pic":"true","sector":"2"}]
我需要在android上解析它

我有以下代码:

JSONObject obj = new JSONObject(response);
JSONArray jsonArray = obj.getJSONArray("");
JSONObject jsonObject = jsonArray.getJSONObject(0);

Log.d("ID -> ", jsonObject.getString("id"));
Log.d("CAT -> ", jsonObject.getString("cat"));
但它不起作用

如果我的结果是:

{ "data":[{"id":"1","cat":"A","pic":"false","sector":"1"},{"id":"2","cat":"B","pic":"true","sector":"2"}]}
我在中修改了代码:

JSONArray jsonArray = obj.getJSONArray("data");
它起作用了

我如何解析我的第一个json响应(没有“数据”)


谢谢。

您应该使用下一个代码:

JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);

Log.d("ID -> ", jsonObject.getString("id"));
Log.d("CAT -> ", jsonObject.getString("cat"));
因为json中没有对象,而是数组,所以应该创建数组而不是对象。这就是为什么你的修改是有效的。因为在修改后的代码中,“数据”是一个对象(JSONObject)

那么

List datas=gson.fromJson(字符串\u为\u json\u数组,新的TypeToken(){}.getType());
用于(数据项:数据){
字符串pic=item.getPic();
}

try-JSONArray-JSONArray=new-JSONArray(响应);然后类似于for(inti=0;inewjsonobject(response)为什么<代码>obj.getJSONArray(“”)你认为这是什么?这是我想说的更好的版本嗨,我试过你的代码,但我有一个错误:“不能从静态上下文引用”<代码>JSONArray JSONArray=新JSONArray(响应);List data=Gson.fromJson(响应,new-TypeToken(){}.getType())错误参考“响应”
JSONArray array = new JSONArray(string_of_json_array);
for (int i = 0; i < array.length(); i++) {
    JSONObject row = array.getJSONObject(i);
    id = row.getInt("id");
    pic = row.getString("pic");
}
public class Data{
     int id;
     String cat;
     String pic;
     String sector;

     //setter and getter
}
List<Data> datas = gson.fromJson(string_of_json_array, new TypeToken<List<Data>>(){}.getType());
for(Data item: datas){
     String pic = item.getPic();
}