java - 以正确的顺序从 Web 服务迭代 Json 数据

标签 java android json linkedhashmap

我有一个来自 Web 服务的响应,数据是 JSON 格式。

JSONObject event:-

{
  "15:00":{"type":1,"status":null,"appointment_id":null}, 
  "16:00":{"type":1,"status":null,"appointment_id":null},
  "17:00":{"type":1,"status":null,"appointment_id":null},
  "18:00":{"type":1,"status":"1","appointment_id":5}
}

我不知道键值,它们是随机的。因此,当我通过获取 keyshasNext() 使用迭代器迭代数据时。它返回数据,但更改传入数据的顺序。

Iterator AppoinmentIter = event.keys();
while(AppoinmentIter.hasNext()){   
        String appointmentTime = (String)AppoinmentIter.next();   
        JSONObject appointmentDetails = event.getJSONObject(appointmentTime);
 }

我希望数据按到达的确切顺序排列。 我检查了这个 link , 它建议使用 LinkedHashMap。但在这里他们通过键插入值。而且我不知道我数据中的 key 。那么我怎样才能以正确的顺序迭代数据。请帮助..

最佳答案

JSON 不是这样工作的。它假设顺序无关紧要,除非你有一个数组。如果你想要顺序很重要,那么你使用了错误的格式——你需要使用一组时间->值,而不仅仅是时间->值。

对于您的特定应用程序,您可以获得一组键,然后使用自定义比较器对它们进行排序,该比较器使用解析为时间的值来对它们进行排序。但是内置的库不会为您做这件事,因为您没有按照其设计使用 JSON。

关于java - 以正确的顺序从 Web 服务迭代 Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17519769/

相关文章:

java - 了解 Eclipse 编辑器中的注释

java - Java 中的掷骰子模拟

javascript - ArcGIS REST web_map_as_json 定义表达式

java - 如何在 Nutiteq 中启用指南针模式?

javascript - 循环遍历数组,并将子 JSON 转换为 observablearray?

java - 如何将 JSON 数组转换为 Java 字符串数组

java - @Autowired 注解在 Spring 中由 BeanPostProcessor 处理吗?

java - 在java中的同一行中打印

android - 在 Android 中更改方向时布局会损坏

Android 对 Listview 项目的波纹效果