如何获得JSON数组里面JSON阵列? [英] How to get JSON array inside JSON array?

查看:139
本文介绍了如何获得JSON数组里面JSON阵列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有消息的JSON响应从URL(服务器)。

\r
\r

{\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

\r
\r

有些消息可能已转发的消息在阵列fwd_messages和转发的邮件,可就是这样的另一个转发的邮件里面:

\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

公共类信息\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

\r
\r

和转发邮件类

\r
\r

公共类FwdMessages {\r
    公众诠释USER_ID;\r
    公众诠释日期;\r
    公共字符串的身体;\r
    公开名单< FwdMessages> fwdMessages;\r
\r
}

\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脱身或属性,你要寻找的。

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屋!

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