如何在iOS中禁用来自web服务调用的自动排序JSON字典响应

如何在iOS中禁用来自web服务调用的自动排序JSON字典响应,ios,objective-c,json,Ios,Objective C,Json,我正在我的应用程序中使用一个web服务。不幸的是,我没有预料到 响应将根据键自动排序。我需要原始的答复 它在网络上。有人能告诉我如何在iOS应用程序中执行此操作吗?我正在使用 下面的代码显示响应 NSDictionary *response = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; JSON对象具有无序键。iOS没有对数据结构中的键进行排序。只是在打印结果时对它们进行排序(为了方便)。在数据结构内

我正在我的应用程序中使用一个web服务。不幸的是,我没有预料到 响应将根据键自动排序。我需要原始的答复 它在网络上。有人能告诉我如何在iOS应用程序中执行此操作吗?我正在使用 下面的代码显示响应

NSDictionary *response  = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

JSON对象具有无序键。iOS没有对数据结构中的键进行排序。只是在打印结果时对它们进行排序(为了方便)。在数据结构内部,没有保证的顺序。这取决于事情如何发展

无法使用
NSJSONSerialization
创建“有序字典”,因为JSON中不存在有序字典。解决此问题的方法是使用字典列表,例如:

[ { "First": "A" }, { "Second", "B" } ]
因为这是一个列表,所以它会保持有序


如果您不能更改格式,并且格式依赖于顺序,那么它不是正确的JSON,您必须以其他方式解析它。通常,我会尝试进行简单的字符串解析(例如在换行符上拆分),以找到可以交给解析器的大型有效JSON“块”。

谢谢Rob。我真的很感谢你的回复。我也在尝试用一个可选的解析器来实现这一点。我不知道在iOS上有哪个解析器可以做到这一点。它必须返回非标准类型(即,它不能使用常规的
NSDictionary
)。“有序JSON对象”打破了JSON的基本承诺。如果你能找到一个流式解析器(比如用于XML的SAX),你可以用它来得到你想要的,但我不知道在iOS上有任何流式JSON解析器。不过,这正是您要寻找的。啊,YAJL可能是这样工作的:请具体查看YAJL解析器。