0

我目前有一个有序的 JSON 字符串被传递到我的 iPhone 应用程序中,然后使用 JSON 框架对其进行解析。

数据如下:

"league_table": object{
"Premiership": array[6],
"Championship": array[6],
"Division 1": array[6],
"Division 2": array[6],
"Division 3": array[6]
}

然而,当它解析它时,它会抛出一个奇怪的顺序。

Division 2
Division 1
Championship
"Division 3"
Premiership

我通过打电话得到的:NSLog(@"%@",[dictionaryValue allKeys]);

有谁之前经历过这个吗?知道该怎么做才能再次对其进行排序吗?

更新 ::

缩短的 UN-Parsed JSON 在这里:

{"league_table":
{
"Premiership":[],
"Championship":[],
"Division 1":[],
"Division 2":[],
"Division 3":[]}
}

据我所知,这是一个键/值对,所以它应该以相同的顺序解析。例如,转到http://json.parser.online.fr/并将其粘贴到其中会以正确的顺序解析它。然而,JSON-Framework 解析它的方式不同,它以一种奇怪的顺序解析它,没有进行真正的排序

4

2 回答 2

4

JSON 对象字段没有定义的顺序。如果您想要按定义顺序排列的键/值对,基本上有两种选择:

  1. 单字段对象数组:

    [{"Premiership": array[6]},
     {"Championship": array[6]},
     {"Division 1": array[6]},
     {"Division 2": array[6]},
     {"Division 3": array[6]}]
    
  2. 键/值对数组:

    [["Premiership", array[6]],
     ["Championship", array[6]],
     ["Division 1", array[6]],
     ["Division 2", array[6]],
     ["Division 3", array[6]]]
    

旁注:我猜测样本数据和 JSON 之间的关系。我不知道在那里做什么objectarray[6]做什么。

于 2010-12-06T15:40:26.933 回答
0

是的,我以前见过。

这会给您带来问题吗?它看起来像一个字典(键控)..所以我猜你的应用程序只是通过它的键访问所需的元素。

我相信 JSON 数组格式会保持顺序。

编辑

好的,所以你需要保持秩序......但从你所说的来看,钥匙似乎并不重要。

您可以控制 JSON 字符串的创建吗?如果是这样,您能否提供这样的数据:

[
{
"leagueName":"Premiership",
"leagueLines":[...]
},
{
"leagueName":"Championship",
"leagueLines":[...]
},
{
"leagueName":"League One",
"leagueLines":[]
},
 ... etc ....
]

I've put in the leagueName in just for information ... who know's you might need it for something :)

Good Luck

于 2010-12-06T15:41:53.297 回答