在android中获取json内容

时间:2013-05-22 06:03:41

标签: android json

  JSONObject json = new JSONObject(ress);

             JSONArray array = json.getJSONArray("data");

             JSONObject o = array.getJSONObject(0);


           Log.d("names","names"+ o.names());



                 Iterator<?> it = o.keys();

                 while (it.hasNext()) {
                     String name = (String) it.next();
                     o = o.getJSONObject(name);
                     bookingId .add(o.getString("booking_id"));
                     clientId.add( o.getString("client_id"));
                     venueId.add(o.getString("venue_id"));



                     Log.v("TEST", String.format("Booking ID: %s -- Client ID: %s -- Venue ID: %s", bookingId, clientId, venueId));
                 }

Json:

{
   "data":[
      {
         "8272":{
            "booking_id":"8221",
            "client_id":"108",
            "venue_id":null
         },
         "‌​8281":{
            "booking_id":"8229",
            "client_id":"71",
            "venue_id":null
         }
      }
   ]
}

没有为8281 ,,

返回任何值

如何转到下一个json对象8281?使用names方法将对象8272和8281作为字符串返回,因此无法访问那些内容

6 个答案:

答案 0 :(得分:1)

在当前的json String数据中JSONArray包含JSONObject,因此您可以从JSONObject获取所有JSONArray

// get data JSONArray
JSONArray data_arr = json.toJSONArray("data");

    for(int i = 0 ; i < data_arr.length(); i++){
      // get JSONObject from JSONArray
      JSONObject json_object = array.getJSONObject(i);

      //nowe get 8272,.. JSONObject from json_object 
      Iterator iter = json_object.keys();

    while(iter.hasNext()){
      String key = (String)iter.next();
      JSONObject json_obj = json_object.getJSONObject(key);

      //.. get all values from 8272 here..
          bookingId .add(json_obj.getString("booking_id"));
          clientId.add(json_obj.getString("client_id"));
          venueId.add(json_obj.getString("venue_id"));
    }

     }

答案 1 :(得分:0)

还考虑使用JsonReader来解析数据。如果数据变大,它将使用更少的内存,因为它不必将整个数组加载到一个java对象中。

有关如何使用它的示例here

答案 2 :(得分:0)

使用谷歌的GSON,更简单,更好的方式来解析JSON。这是教程。我一直在我的所有项目中使用它,它就像一个魅力。 GSON Tutorial

答案 3 :(得分:0)

你必须像这样解析

JSONObject json = new JSONObject(ress);

JSONArray array = json.getJSONArray("data");

int len=array.length();
for(int i=0;i<len;i++)
{
JSONObject temp=array.getJSONObject(i)
bookingId .add(temp.getString("booking_id"));
clientId.add(temp.getString("client_id"));
venueId.add(temp.getString("venue_id"));



}

答案 4 :(得分:0)

在你的while循环中

o = o.getJSONObject(name);

这是问题,在这里用不同的名称创建一个新对象

JSONObject jobj = o.getJSONObject(name);
bookingId .add(jobj.getString("booking_id"));
clientId.add( jobj.getString("client_id"));
venueId.add(jobj.getString("venue_id"));



 Log.v("TEST", String.format("Booking ID: %s -- Client ID: %s -- Venue ID: %s", bookingId, clientId, venueId));

答案 5 :(得分:-1)

将此用于循环

for(i=0;i<array.lenght();i++)
{
   // evey iteration you will get an json object.
}