我想要动态解析我的Json数组。并希望获得jsonarray下每个元素的键数组。我正在通过迭代器得到这个。而不是根据输出的json格式数据来获得隔离。
my JSON Formate :
{
"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"
}
]
}
以下是我的代码: :
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);
我在日志输出中得到的内容:
---- KEYS---- [DateCreated,CustomerName, Customer, ShipmentNumber]
我想要的:
---- KEYS---- [ShipmentNumber, Customer, DateCreated,CustomerName]
发布于 2012-08-31 21:18:40
JSONObject文档(链接:http://developer.android.com/reference/org/json/JSONObject.html)对keys()
函数有以下描述:
公共迭代器密钥()
自: API级别1
返回此对象中字符串名称的迭代器。返回的迭代器支持remove,这将从此对象中删除相应的映射。如果在返回迭代器之后修改此对象,则迭代器的行为是未定义的。未定义键的顺序为。
因此,您可能会获得密钥,但顺序未定义。如果您希望键按任何特定的顺序排列,则可以使用任何排序算法。
编辑
由于您不知道从WS获取密钥的顺序,因此在收到数据后,您可以按顺序在屏幕上显示详细信息。构建arraylist
KEYS
后,您可以使用以下内容按字母顺序对其进行排序:
Collections.sort(KEYS);
这将根据Strings
在KEYS
arraylist
中的自然顺序(按字母顺序)对其进行排序。
发布于 2012-08-31 21:37:01
当我按下ctlr+space栏的时候,我才知道,它清楚地写着键的行为是未定义的,顺序不是由键来维护的。
Arun George正确地说过,你必须使用任何排序方法来实现你的目标。
对于排序,这个link可能会对你有所帮助。
发布于 2012-09-01 13:18:12
使用谷歌的GSON库。它有很多读取/创建/解析json数组和json对象设置。我没有测试它来寻找解决方案,但我认为它是一个非常简单和功能齐全的工具,可以解决问题。
https://stackoverflow.com/questions/12175723
复制相似问题