JSON-Framework以奇怪的顺序解析数据

时间:2010-12-06 15:34:24

标签: iphone objective-c json json-framework

我目前有一个有序的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并没有解析它,它以一种奇怪的顺序解析它而没有进行真正的排序

2 个答案:

答案 0 :(得分: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]]]
    
  3. 旁注:我猜测样本数据和JSON之间的关系。我不知道objectarray[6]在那里做了什么。

答案 1 :(得分:0)

是的,我之前见过。

这是否会导致您出现问题?它看起来像一个字典(键控)..所以我猜你的应用程序只是通过它的密钥访问所需的元素。

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

修改

好的,所以你需要保持秩序......但是根据你的说法,看起来钥匙并不重要。

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

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

我在联盟名称中只是为了获取信息...谁知道你可能需要它来做某件事:)

祝你好运