来自android中的jsonobject的数据

时间:2013-05-12 12:45:49

标签: android json

下面是从字符串url调用并返回一个json对象,里面有一个json数组,但是其他东西不起作用,有人能告诉我如何访问里面的数据吗?

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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格式不正确。它最终错过了一个}。

答案 2 :(得分:0)

我认为问题是key venue_id的值为null。你可以用空字符串(“”)替换空值,试一试。