如何解析Android中的JsonArray值

时间:2016-10-24 13:03:24

标签: android arrays json

我想解析以下JSon数组中的所有name和id属性: JSon link

我尝试使用以下代码但无法正常工作。我得到了

org.json.JSONException: Value [{"id":0,"name":"Alsópetény"}] at 0 of type org.json.JSONArray cannot be converted to JSONObject

异常

我的代码:

JSONArray jsonarray = new JSONArray(jsonList);
                for (int i = 0; i < jsonarray.length(); i++) {
                    JSONObject jsonobject = jsonarray.getJSONObject(i);
                    String id= jsonobject.getString("id");
                    String name= jsonobject.getString("name");

                    System.out.print("ID:\n"+id+"");
                    System.out.print("NAME:\n"+name+"");
                }

1 个答案:

答案 0 :(得分:4)

你的(我从你发布的链接中可以看到)是一个单独的JSON消息{...},它包含许多节点(“A”,“B”,“E”,“F”......等等)。每个节点都是一个包含一些JSON对象的JSON数组。

你必须首先获得JSON对象:“A”,“B”,......这样:

String result = EntityUtils.toString(response.getEntity()); //the result of HTTP call
JSONObject JO = new JSONObject(result);
JSONArray ja = JO.getJSONArray("A");
JSONArray jb = JO.getJSONArray("B");
...

然后你必须访问JsonArray元素:

for(int i=0; i< ja.length(); i++){
    JSONObject jo = ja.getJSONObject(i);
    String id = jo.getString("id");
    String name = jo.getString("name");

    System.out.println("id: " + id + "");
    System.out.println("name: " + name + "");
}