首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取jsonarray下每个元素的键数组

获取jsonarray下每个元素的键数组
EN

Stack Overflow用户
提问于 2012-08-29 18:19:36
回答 5查看 6.7K关注 0票数 17

我想要动态解析我的Json数组。并希望获得jsonarray下每个元素的键数组。我正在通过迭代器得到这个。而不是根据输出的json格式数据来获得隔离。

my JSON Formate :

代码语言:javascript
复制
{
  "result": "Success",
  "AlertDetails": [
    {
      "ShipmentNumber": "SHP34",
      "Customer": "BEST",
      "DateCreated": "2012-08-29T04:59:18Z"
      "CustomerName": "BEST"
    },
    {
      "ShipmentNumber": "SHP22",
      "Customer": "BEST",
      "DateCreated": "2012-08-29T05:34:18Z"
      "CustomerName": "Jelly"
    }
  ]
}

以下是我的代码: :

代码语言:javascript
复制
    JSONArray array = jsonobject.getJSONArray("AlertDetails");

    JSONObject keyarray = array.getJSONObject(0);
    Iterator temp = keyarray.keys();
        while (temp.hasNext()) {
                    String curentkey = (String) temp.next();
                    KEYS.add(curentkey);

    }
Log.d("Parsing Json class", "  ---- KEYS---- " + KEYS);

我在日志输出中得到的内容:

代码语言:javascript
复制
 ---- KEYS---- [DateCreated,CustomerName, Customer, ShipmentNumber]

我想要的:

代码语言:javascript
复制
 ---- KEYS---- [ShipmentNumber, Customer, DateCreated,CustomerName]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-31 21:18:40

JSONObject文档(链接:http://developer.android.com/reference/org/json/JSONObject.html)对keys()函数有以下描述:

公共迭代器密钥()

自: API级别1

返回此对象中字符串名称的迭代器。返回的迭代器支持remove,这将从此对象中删除相应的映射。如果在返回迭代器之后修改此对象,则迭代器的行为是未定义的。未定义键的顺序为。

因此,您可能会获得密钥,但顺序未定义。如果您希望键按任何特定的顺序排列,则可以使用任何排序算法。

编辑

由于您不知道从WS获取密钥的顺序,因此在收到数据后,您可以按顺序在屏幕上显示详细信息。构建arraylist KEYS后,您可以使用以下内容按字母顺序对其进行排序:

代码语言:javascript
复制
Collections.sort(KEYS);  

这将根据StringsKEYS arraylist中的自然顺序(按字母顺序)对其进行排序。

票数 12
EN

Stack Overflow用户

发布于 2012-08-31 21:37:01

当我按下ctlr+space栏的时候,我才知道,它清楚地写着键的行为是未定义的,顺序不是由键来维护的。

Arun George正确地说过,你必须使用任何排序方法来实现你的目标。

对于排序,这个link可能会对你有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2012-09-01 13:18:12

使用谷歌的GSON库。它有很多读取/创建/解析json数组和json对象设置。我没有测试它来寻找解决方案,但我认为它是一个非常简单和功能齐全的工具,可以解决问题。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12175723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档