【问题标题】:How to have the same order in a JSON Array as a JSON response?如何在 JSON 数组中具有与 JSON 响应相同的顺序?
【发布时间】:2015-03-01 00:12:51
【问题描述】:

我收到一个 JSON 响应,例如

{
  "status": "success",
  "0": {
    "fname": "john",
    "lname":"doe"
  },
  "1": {
    "fname":"jane",
    "lname":"doe"
  }
}

当我得到这个 JSONObject 并尝试将其放入 JSON 数组中时,元素 0 是 status:succes,元素 1 是 fname: "john", lname: "doe" .. 等等。结果混淆了。该数组与 JSON 响应的顺序不同。如何以相同的顺序将 JSON 响应和每个元素解析为 JSON 对象?

【问题讨论】:

  • 为什么要让事情保持相同的顺序?
  • 你没有从那个 json 响应中得到一个数组。为什么不解析每个值并按照你想要的顺序放入一个数组中呢?
  • JSON 对象被解码为 hashmaps/hashes/dictionaries/etc(术语取决于语言)。没有固有的键顺序,因此无法保证键出现的顺序。
  • 你真正想要得到的是:["success", {"fname":"john", ...}, ...],所以让服务器这样发送。如果你做不到,那你就不走运了。

标签: java json


【解决方案1】:

如果您的密钥是“0”“1”等,试试这个:

 NSMutableArray *ar = @[].mutableCopy;
    NSDictionary *json = @{};//Data back
    [ar addObject:json[@"status"]];
    for (int i = 0; i < json.allKeys.count-1; i++) {
        NSString *key = [NSString stringWithFormat:@"%d",i];
       [ar addObject:json[key]];
    }

【讨论】:

  • 你能帮我用 JAVA 吗?我假设 NSMutableArray 是 ArrayList 而 NSDictionary 是 HashMap 或表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2017-01-24
  • 2016-09-10
  • 2017-09-21
  • 2020-12-29
  • 1970-01-01
  • 2014-04-02
相关资源
最近更新 更多