如何获得JSON数组里面JSON阵列? [英] How to get JSON array inside JSON array?
问题描述
我有消息的JSON响应从URL(服务器)。
{\r
回应:[\r
79457,\r
{\r
中等:321,\r
日期:123,\r
走出去:1,\r
UID:984,\r
read_state:1,\r
头衔:......\r
身:消息,\r
fwd_messages:[\r
{\r
UID:981,\r
日期:152,\r
身:转发邮件1\r
fwd_messages:[\r
{\r
UID:654,\r
日期:156,\r
身:1\r
},\r
{\r
UID:174,\r
日期:158,\r
身:2\r
}\r
]\r
},\r
{\r
UID:949,\r
日期:651,\r
身:转发的消息2\r
fwd_messages:[\r
{\r
UID:694,\r
日期:320,\r
身:32,\r
fwd_messages:[\r
{\r
UID:152,\r
日期:111,\r
身:1\r
fwd_messages:[\r
{\r
UID:151,\r
日期:112,\r
身:8\r
}\r
]\r
},\r
{\r
UID:542,\r
日期:315,\r
身:2\r
fwd_messages:[\r
{\r
UID:129,\r
日期:514,\r
身:1\r
fwd_messages:[\r
{\r
UID:635,\r
日期:225,\r
身:8\r
}\r
]\r
}\r
]\r
}\r
]\r
},\r
{\r
UID:123,\r
日期:650,\r
身体: ,\r
fwd_messages:[\r
{\r
UID:154,\r
日期:122,\r
身:1\r
},\r
{\r
UID:547,\r
日期:510,\r
身:2\r
}\r
]\r
}\r
]\r
}\r
]\r
}\r
]\r
}
\r
有些消息可能已转发的消息在阵列fwd_messages和转发的邮件,可就是这样的另一个转发的邮件里面:
的uid:949,\r
日期:651,\r
身:转发的消息2\r
fwd_messages:[\r
{\r
UID:694,\r
日期:320,\r
身:32,\r
fwd_messages:[\r
{\r
UID:152,\r
日期:111,\r
身:1\r
fwd_messages:[\r
{\r
UID:151,\r
日期:112,\r
身:8\r
}\r
]\r
},\r
{\r
UID:542,\r
日期:315,\r
身:2\r
fwd_messages:[\r
{\r
UID:129,\r
日期:514,\r
身:1\r
fwd_messages:[\r
{\r
UID:635,\r
日期:225,\r
身:8\r
}\r
]\r
}\r
]\r
}\r
]\r
},\r
{\r
UID:123,\r
日期:650,\r
身体: ,\r
fwd_messages:[\r
{\r
UID:154,\r
日期:122,\r
身:1\r
},\r
{\r
UID:547,\r
日期:510,\r
身:2\r
}\r
]\r
}\r
]\r
}
\r
我有一个简单的消息类调用消息
公共类信息\r
{\r
公众诠释USER_ID;\r
公众诠释日期;\r
公共字符串的身体;\r
公开名单< FwdMessages> fwdMessages;\r
\r
公共信息(INT USER_ID,诠释日期,绳体,列表与LT; FwdMessages> fwdMessages){\r
this.user_id = USER_ID;\r
this.date =日期;\r
this.body =身体;\r
this.fwdMessages = fwdMessages;\r
}\r
}
\r
和转发邮件类
公共类FwdMessages {\r
公众诠释USER_ID;\r
公众诠释日期;\r
公共字符串的身体;\r
公开名单< FwdMessages> fwdMessages;\r
\r
}
\r
那么,怎样才能我得到这个转发另一个转发的邮件里面的消息,并把它们放入一个列表?并且应当注意,一个FWD消息对象是从另一个。对不起,我的英语:)
如果你使用 GSON
,它可以从Maven的目录,可以从初始化变量你刚刚得到的回应,就像这样:结果
GSON GSON =新GSON();
消息m = gson.fromJson(响应,Message.class);
从那里,得到的将是不够的。结果
还有另一种选择,它涉及到多一点的工作,但它工作正常也。它由制作的的JSONObject
从服务器的JSON响应,并调用一个get到的JSONObject
,它会如下所示:结果
的JSONObject的obj = NULL;
尝试{
OBJ =新的JSONObject(响应);
}赶上(JSONException E){
e.printStackTrace();
}
然后,你可以调用另一个获得,而是从 OBJ
,就像这样:结果
的JSONObject响应= obj.getJSONObject(回应);
JSONArray< FwdMessages>阵= response.getJSONArray(fwd_messages);
从那里,你会从得到的对象只有1脱身或属性,你要寻找的。 P>
I have JSON response with messages from url(server).
{
"response": [
79457,
{
"mid": 321,
"date": 123,
"out": 1,
"uid": 984,
"read_state": 1,
"title": " ... ",
"body": "message",
"fwd_messages": [
{
"uid": 981,
"date": 152,
"body": "forwarded messages 1",
"fwd_messages": [
{
"uid": 654,
"date": 156,
"body": "1"
},
{
"uid": 174,
"date": 158,
"body": "2"
}
]
},
{
"uid": 949,
"date": 651,
"body": "forwarded messages 2",
"fwd_messages": [
{
"uid": 694,
"date": 320,
"body": "32",
"fwd_messages": [
{
"uid": 152,
"date": 111,
"body": "1",
"fwd_messages": [
{
"uid": 151,
"date": 112,
"body": "8"
}
]
},
{
"uid": 542,
"date": 315,
"body": "2",
"fwd_messages": [
{
"uid": 129,
"date": 514,
"body": "1",
"fwd_messages": [
{
"uid": 635,
"date": 225,
"body": "8"
}
]
}
]
}
]
},
{
"uid": 123,
"date": 650,
"body": "",
"fwd_messages": [
{
"uid": 154,
"date": 122,
"body": "1"
},
{
"uid": 547,
"date": 510,
"body": "2"
}
]
}
]
}
]
}
]
}
Some messages can have forwarded messages in arrays "fwd_messages" and forwarded messages can be inside another forwarded messages like this:
"uid": 949,
"date": 651,
"body": "forwarded messages 2",
"fwd_messages": [
{
"uid": 694,
"date": 320,
"body": "32",
"fwd_messages": [
{
"uid": 152,
"date": 111,
"body": "1",
"fwd_messages": [
{
"uid": 151,
"date": 112,
"body": "8"
}
]
},
{
"uid": 542,
"date": 315,
"body": "2",
"fwd_messages": [
{
"uid": 129,
"date": 514,
"body": "1",
"fwd_messages": [
{
"uid": 635,
"date": 225,
"body": "8"
}
]
}
]
}
]
},
{
"uid": 123,
"date": 650,
"body": "",
"fwd_messages": [
{
"uid": 154,
"date": 122,
"body": "1"
},
{
"uid": 547,
"date": 510,
"body": "2"
}
]
}
]
}
I have a simple message class called Message
public class Message
{
public int user_id;
public int date;
public String body;
public List<FwdMessages> fwdMessages;
public Message (int user_id, int date, String body, List<FwdMessages> fwdMessages) {
this.user_id = user_id;
this.date = date;
this.body = body;
this.fwdMessages = fwdMessages;
}
}
And Forwarded Messages class
public class FwdMessages {
public int user_id;
public int date;
public String body;
public List<FwdMessages> fwdMessages;
}
So how can I get this forwarded messages inside another forwarded messages and put them into a list? And it should be noted that one fwd messages object is from another. Sorry of my English :)
If you're using Gson
, which is available from Maven directories, you can initialize a variable from the response you just got, like this:
Gson gson = new Gson();
Message m = gson.fromJson(response, Message.class);
From there, a get will be enough.
There's another option, which involves a little more work, but it works fine also. It consists of making a JSONObject
from a JSON response from the server, and calling a get to that JSONObject
, it would look like this:
JSONObject obj = null;
try {
obj = new JSONObject(response);
} catch (JSONException e) {
e.printStackTrace();
}
And then, you can call another get, but from obj
, like this:
JSONObject response = obj.getJSONObject("response");
JSONArray<FwdMessages> array = response.getJSONArray("fwd_messages");
And from there, you will be just 1 get away from getting the object or attribute you're looking for.
这篇关于如何获得JSON数组里面JSON阵列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!