JSONObject JSON数组长度

时间:2014-08-25 15:41:30

标签: java xml json jsonobject

我正在阅读java中的以下XML,并转换为JSONObject [org.json.JSONObject]。 并附加元数据并以JSON形式返回。

问题JSONObject jsonObj = service.getMyData(); //自定义方法和调用

int count = jsonObj.length(); //长度为1

如何从这个jsonObj中获取正确的计数? 。在这种情况下,我所指的正确计数是2。 [2本书]

我尝试了什么?

(1)System.out.println(jsonObj.length()); //打印1

API说:length()           获取存储在JSONObject中的密钥数。

(2)由于键的数量返回为1,因此尝试下面的键没有意义,我仍然尝试过  并得到org.json.JSONException: JSONObject["User"] not found.

的错误
 System.out.println(jsonObj.getJSONArray("User").length());

(3)如果我尝试用户'即:jsonObj.getJSONArray("Users").length(),它说JSONObject["Users"] is not a JSONArray

(4)

JSONObject jsonObj = service.getMyData();
 JSONObject jUsers =  jsonObj.getJSONObject("Users");
 JSONObject jUser =  jUsers.getJSONObject("User");
 System.out.println(jUser.length());

错误:org.json.JSONException: JSONObject["User"] is not a JSONObject.


XML:

<Users>
    <User>
        <Name>Unni</Name>
        <Books>
            <Book>book1</Book>
            <Book>book2</Book>
            <Book>book3</Book>
        </Books>
    </User>
    <User>
        <Name>Ammu</Name>
        <Books>
            <Book>book1</Book>
            <Book>book2</Book>
            <Book>book4</Book>
        </Books>
    </User>
</Users>

JSON:

{
    "Users": {
        "User": [
            {
                "Name": "Unni",
                "Books": {
                    "Book": [
                        "book1",
                        "book2",
                        "book3"
                    ]
                }
            },
            {
                "Name": "Ammu",
                "Books": {
                    "Book": [
                        "book1",
                        "book2",
                        "book4"
                    ]
                }
            }
        ]
    }
}

2 个答案:

答案 0 :(得分:2)

我在检索数组时必须调用getJSONArray方法。

JSONObject jsonObj = service.getMyData();
JSONObject jUsers =  jsonObj.getJSONObject("Users");
System.out.println(jUsers.getJSONArray("User").length());

答案 1 :(得分:1)

JSON格式,

[]是JSONArray

{}是JSONObject

在你的帖子中,

  • 用户 - JSONObject
  • 用户 - JSONArray
  • 图书 - JSONObject
  • 预订 - JSONArray

Error: org.json.JSONException: JSONObject["User"] is not a JSONObject.

如上所述,请尝试使用getJSONArray()

 JSONArray userArray = jUsers.getJSONArray("User");