xcode按字母顺序对json进行排序时,不应进行任何排序

xcode按字母顺序对json进行排序时,不应进行任何排序,json,xcode,sorting,Json,Xcode,Sorting,我有一个脚本,它似乎将生成的JSon排序为其他顺序 php脚本输出的json如下 {result: {pizza: {more nodes etc..... } }, {pasta: {more nodes etc..... } }, {sides: {more nodes etc..... } }, {salads: {m

我有一个脚本,它似乎将生成的JSon排序为其他顺序

php脚本输出的json如下

{result:
    {pizza:
        {more nodes etc.....
         }
    },
    {pasta:
        {more nodes etc.....
         }
    },
    {sides:
        {more nodes etc.....
         }
    },
    {salads:
        {more nodes etc.....
         }
    },  
    {desserts:
         {more nodes etc.....
         }
    }
}
然后,我在Xcode中使用以下代码进行JSon序列化:

 NSMutableDictionary *res = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableLeaves error:&myError];
如果我在控制台中显示结果,json将按字母顺序列出(这不是原始输出),如下所示

此时,我的代码中没有列出任何排序选项,正如您所看到的,它对json结果进行了排序

然后,如果我运行这段代码,只显示键:

NSLog(@"data %@",[[res objectForKey:@"results"]allKeys]);
我得到这个结果:

data (
    pasta,
    pizza,
    sides,
    salad,
    desserts
)
按字母顺序,第一个元素已放在底部

我根本不想要任何排序,因为排序是由php脚本处理的


有什么想法吗?

这不是JSON,它是一个
NSMutableDictionary
。字典没有顺序,显示代码正在执行您看到的排序

如果您想要一个必须在JSON中显式提供的订单,则dictionary项的顺序不足以指定订单


或者,您也可以自己解析JSON以确定顺序,但必须在字典之外的其他地方维护该顺序。可能在字典键名称的关联数组中。

数据在uitableview中的显示方式相同。如果我使用valueAtIndex:0,它会根据上面的列表选择相同的值,但
NSMutableDictionary
没有方法:
valueAtIndex:0
。如果你将索引到一个键数组中,得到的顺序只是偶然发生的。你能推荐使用NSMutableDictionary以外的其他方法吗?从Apple的ther
allKeys
method文档中可以看出:“数组中元素的顺序没有定义。”请查看CocoaPods中的“ORDERED DICTIONARY*”。但您必须找到另一种JSON解析方法。
data (
    pasta,
    pizza,
    sides,
    salad,
    desserts
)