Java:遍历嵌套的JSON对象 [英] Java: Looping through nested JSON Object
本文介绍了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屋!
查看全文