我正在使用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。
任何人都可以建议一种能让我按照原始顺序获取/保持密钥的方法吗?
感谢。
答案 0 :(得分:3)
如果顺序很重要,则使用数组而不是字典,字典本质上是无序的。或者按照所需的顺序添加一个字典键数组。
如果您无法控制发送的响应,则必须自行解析JSON,至少是为了订购。
答案 1 :(得分:0)
当您创建NSDictionary时,顺序将不同。我经常认识到字典按字母顺序按键名排序。
但是当使用词典时,顺序并不重要。他们不应该!
答案 2 :(得分:0)
正如之前的回答所提到的词典本质上没有顺序,但你可以在这里找到一个很好的 OrderedDictionary 类:
http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html