我目前有一个有序的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并没有解析它,它以一种奇怪的顺序解析它而没有进行真正的排序
答案 0 :(得分:4)
JSON对象字段没有已定义的顺序。如果您希望按定义的顺序键/值对,则基本上有两个选项:
单字段对象数组:
[{"Premiership": array[6]},
{"Championship": array[6]},
{"Division 1": array[6]},
{"Division 2": array[6]},
{"Division 3": array[6]}]
一组键/值对:
[["Premiership", array[6]],
["Championship", array[6]],
["Division 1", array[6]],
["Division 2", array[6]],
["Division 3", array[6]]]
旁注:我猜测样本数据和JSON之间的关系。我不知道object
和array[6]
在那里做了什么。
答案 1 :(得分:0)
这是否会导致您出现问题?它看起来像一个字典(键控)..所以我猜你的应用程序只是通过它的密钥访问所需的元素。
我相信JSON数组格式会保持顺序。
修改
好的,所以你需要保持秩序......但是根据你的说法,看起来钥匙并不重要。
您是否可以控制JSON字符串的创建?如果是这样,你能否提供如下数据:
[
{
"leagueName":"Premiership",
"leagueLines":[...]
},
{
"leagueName":"Championship",
"leagueLines":[...]
},
{
"leagueName":"League One",
"leagueLines":[]
},
... etc ....
]
我在联盟名称中只是为了获取信息...谁知道你可能需要它来做某件事:)
祝你好运