Java:遍历嵌套的JSON对象 [英] Java: Looping through nested JSON Object

查看:712
本文介绍了Java:遍历嵌套的JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有以下存储消息的结构:

I have the following structure for storing messages:

{
    "Channel_12": [
        ["[{\"to\":\"Bill\",\"msg\":\"Hello\",\"time\":\"10:36\"}]"], "[{\"agentName\":\"demo\",\"msg\":\"Hello 2\",\"time\":\"10:37\"}]"
    ],
    "Channel_34": [
        ["[{\"to\":\"Bill\",\"msg\":\"Hey 1\",\"time\":\"10:37\"}]"], "[{\"agentName\":\"demo\",\"msg\":\"Hey 2\",\"time\":\"10:38\"}]"
    ] }

我现在正试图遍历并获取给定频道的每条消息,可以说我想获取频道Channel_12的所有消息.

I'm now trying to loop through and get each message for a given channel, lets say i want to fetch all the messages for channel Channel_12.

当前我有以下代码:

        org.codehaus.jettison.json.JSONArray c = obj.getJSONArray("Channel_12");

        for (int i = 0 ; i < c.length(); i++) {
            JSONObject obj = c.getJSONObject(i); <!-- Exception is here

            System.out.println(obj.getString("to").toString());
            System.out.println(obj.getString("msg").toString());

        }

但是出现以下异常:

org.codehaus.jettison.json.JSONException: JSONArray[0] is not a JSONObject.
    at org.codehaus.jettison.json.JSONArray.getJSONObject(JSONArray.java:277)
    at im.Client$HistoryJSON.getHistory(Client.java:7229)
    at im.Client$32$4.run(Client.java:2246)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

有什么想法吗?

推荐答案

将您的代码更改为

        JSONArray c = jsonObject.getJSONArray("Channel_12");  //Change your code from here
        JSONArray array = c.getJSONArray(0);
        String data = c.getString(1);
        Log.i("#Values", array.getString(0) + "\t" + data);

看看我的结果,

这篇关于Java:遍历嵌套的JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆