2013-05-12 45 views
0

下面是从字符串url中调用并返回一个json对象,里面有一个json数组,但别的东西没有工作,任何人都可以告诉我如何访问里面的数据?来自jsonobject的数据在android

 {"data":[{"8196":{"booking_id":"8150","client_id":"107","venue_id":null}}] 
+0

向我们展示您当前的代码,并解释您的意思是:“别的东西无法正常工作”。 – 2013-05-12 12:48:24

+0

你的JSON输出本身是错误的你可以把你的上面的JSON输出放在这里(http://json.parser.online.fr/)你会得到错误:SyntaxError:意外的输入结束...因为看看你的json输出结束 – KOTIOS 2013-05-12 13:02:08

回答

0
String jsonStr = "{\"data\":[{\"8196\":{\"booking_id\": \"8150\",\"client_id\": \"107\",\"venue_id\": null}}]}"; 

try { 
    JSONObject json = new JSONObject(jsonStr); 
    JSONArray array = json.getJSONArray("data"); 
    for (int i = 0; i < array.length(); i++) { 
     JSONObject o = array.getJSONObject(i); 
     Iterator it = o.keys(); 

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

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

    } 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

我想这就是你想要的。顺便说一句,你发布的JSON格式不正确。它最终缺少了一个}。

+0

感谢家伙马丁斯代码大致是我一直在尝试,但是对象是(“8196”)将会随着我而改变,知道它是什么? – user1136994 2013-05-12 19:34:33

+0

我试图调用对象(“8196”)而没有实际命名它? – user1136994 2013-05-12 20:42:54

+0

在代码的关键字上添加了一个迭代器。应该解决你的问题。 – 2013-05-13 07:48:16

0

您首先需要解码JSON字符串。你得到的JSON刺激实际上是一个JSON对象的序列化版本。

您需要将该字符串解码为本机Java对象。

在Java中有很多这样的方法。您可以先查看json.org上的Java部分。

+0

很抱歉忘了结尾},那不是问题,只是忘了在这里复制它。 – user1136994 2013-05-12 19:35:33

0

我认为问题在于关键venue_id的值为空。你可以用空字符串(“”)替换空值,尝试它。