我从JSON字符串的服务器得到了非常大的响应.我将它转换为JSON对象,然后获取密钥并迭代它.
问题是,当我迭代时,它的顺序与服务器的响应顺序不同.
接下来,我通过添加所有键List<String>并对其进行排序来应用另一种方法,然后获取其中的迭代器但仍然不是我需要的(如响应中).
代码示例如下:
JSONObject jsonObject = new JSONObject(responseString);
Iterator<String> myIter = jsonObject.keys();
List<String> sortKey = new ArrayList<String>();
while(myIter.hasNext()){
sortKey.add(myIter.next());
}
Collections.sort(sortKey);
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 18
JSON对象的键的顺序不应该是有意义的.如果需要特定订单,则应使用数组,而不是对象.
您的Java代码按字母顺序对键进行排序.无法获得对象中键的初始排序.
键的顺序是未定义的
参考2:
对象是一组无序的名称/值对
Geo*_*zov 17
您可以使用Sorted map将键和值放入.像这样的东西
public static List listFromJsonSorted(JSONObject json) {
if (json == null) return null;
SortedMap map = new TreeMap();
Iterator i = json.keys();
while (i.hasNext()) {
try {
String key = i.next().toString();
JSONObject j = json.getJSONObject(key);
map.put(key, j);
} catch (JSONException e) {
e.printStackTrace();
}
}
return new LinkedList(map.values());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24204 次 |
| 最近记录: |