如何保留使用AFNetworking检索的JSON数据的顺序?

时间:2013-04-18 10:59:32

标签: ios json afnetworking

我正在使用AFNetworking从Web服务中检索JSON数据。我得到的部分响应字符串是:

{"DATA":{"LEASE TYPE":"3 Yrs + 0 renew of 0 Yrs","LANDLORD":"","TENANT":"test comp"... 

等等。 “DATA”字典中的键值顺序(“LEASE TYPE”,“LANDLORD”,“TENANT”......)对于演示目的很重要。但是,当AFNetworking调用NSJSONSerialization's时:

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

方法,返回的字典具有不同顺序的键。

我注意到AFJSONRequestOperation对象将服务器的响应存储为NSString,所有内容都按正确顺序排列。但是如果我能避免的话,我并不热衷于手工解析JSON。

任何人都可以建议一种能让我按照原始顺序获取/保持密钥的方法吗?

感谢。

3 个答案:

答案 0 :(得分:3)

如果顺序很重要,则使用数组而不是字典,字典本质上是无序的。或者按照所需的顺序添加一个字典键数组。

如果您无法控制发送的响应,则必须自行解析JSON,至少是为了订购。

答案 1 :(得分:0)

当您创建NSDictionary时,顺序将不同。我经常认识到字典按字母顺序按键名排序。

但是当使用词典时,顺序并不重要。他们不应该!

答案 2 :(得分:0)

正如之前的回答所提到的词典本质上没有顺序,但你可以在这里找到一个很好的 OrderedDictionary 类:

http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html

http://projectswithlove.com/projects/OrderedDictionary.zip