gpt4 book ai didi

ios - 读取iOS开发的JSON字符串时如何保持原来的顺序?

转载 作者:行者123 更新时间:2023-12-01 19:51:56 26 4
gpt4 key购买 nike

当我将JSON字符串读取为字典时,字典顺序与JSON字符串原始顺序不同。有谁知道如何解决它?也许有人会告诉我字典是无序的,但是,我们的项目需要按 JSON 字符串原始顺序对字典进行排序。

最佳答案

JSON 对象在 JSON 规范中定义为无序集合。

An object is an unordered set of name/value pairs. (http://json.org/)



以下是一些可能的解决方案:
  • 将 JSON 对象更改为对象数组。如果您控制服务器,这是迄今为止最好的选择。如果顺序很重要,那么数组是正确的选择。
  • 将订单与 JSON 一起发送。您可以将一组键也包含在 JSON 中。同样,您需要控制服务器才能执行此操作。
  • 拿到 key 后对它们进行排序。仅当您想要的顺序可以从键中派生时,这才有效。例如,如果键是字母或数字。如果您控制 key (即使您不控制整个服务器响应),您可以通过将 key 更改为以适合您的方式排序(例如从 ["stores","locations "] 到 ["0_stores","1_locations"]。如果您知道所有可能的键及其顺序,这也可以工作。
  • 按 JSON 字典中的位置对键进行排序。如果 JSON 中的键是 保证不显示在 JSON 中的任何其他位置(即 JSON 中没有任意文本字段),那么您可以通过查看它们在 JSON 字符串中出现的位置来对所有字典键进行排序:
    NSArray* sortedKeys = [[dictionary allKeys] sortedArrayUsingComparator:^NSComparisonResult(NSString*  key1, NSString* key2) {
    NSInteger location1 = [jsonString rangeOfString:key1].location;
    NSInteger location2 = [jsonString rangeOfString:key2].location;
    return [@(location1) compare:@(location2)];
    }];
  • 如果这些选项都不适合您,那么您将找到或创建自己的尊重顺序的 JSON 解析器。我认为很难找到这样的库,因为它会明确违反 JSON 规范。我不推荐这个选项。
  • 关于ios - 读取iOS开发的JSON字符串时如何保持原来的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319524/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com