JSON-Framework Парсинг данных в странном порядке - PullRequest
0 голосов
/ 06 декабря 2010

В настоящее время у меня есть упорядоченная строка JSON, передаваемая в мое приложение iPhone, которое затем анализируется с использованием JSON Framework.

Данные следующие:

"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 ]

4 голосов
/ 06 декабря 2010

Поля объекта 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]]]
    

Sidenote: Я почти догадываюсь о связи между образцами данных и JSON. Я не знаю, что object и array[6] делают там.

0 голосов
/ 06 декабря 2010

Да, я видел это раньше.

Это вызывает у вас проблемы? он выглядит как словарь (с ключом) .. поэтому я думаю, что ваше приложение просто обращается к необходимым элементам по его ключу.

Я считаю, что формат массива JSON будет поддерживать порядок.

EDIT

Хорошо, вам нужно поддерживать порядок ... но из того, что вы говорите, похоже, что ключ не важен.

Вы контролируете создание строки JSON? Если да, не могли бы вы представить данные следующим образом:

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

Я указал имя лиги только для информации ... кто знает, может вам это понадобится для чего-то:)

Удачи

...