2010-12-06 9 views
0

私は現在JSONフレームワークを使って解析されている私のiPhoneアプリに渡された注文JSON文字列を持っています。次のように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]);です。

これまで経験したことがありますか?それをもう一度並べ替えるために何をすべきか?

UPDATE ::

短縮UN-解析済みJSONはここにある:

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

は、私の知る限り、これはキー/値ペアであるので、それは同じで解析する必要があります注文。 たとえば、http://json.parser.online.fr/に貼り付けて貼り付けると、正しい順序で解析されます。 JSON-Frameworkは同じ構文解析をしませんが、実際の並べ替えを行わずに異常な順序で解析します。

答えて

0

うん、私はこれまでに見ました。

これは問題がありますか?それは辞書(キー)のように見えます..あなたのアプリケーションは、それがキーで必要な要素にアクセスすると思います。

私は、JSON配列形式が注文を維持すると考えています。

EDIT

オクラホマので、あなたは秩序を維持する必要があります...しかし、キーは重要ではありませんようにあなたが言うことから、それが見えます。

あなたはJSON文字列の作成を制御していますか?もしそうなら、このようなデータを提示できますか?

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

私はちょうど情報のためにleagueNameに入れました...誰があなたが:)

グッドラック

+0

ちょっと、問題は私が次にForEachループを使用してキーを取得し、その下の子を反復することです。 それはそうでなければそれは間違った順序でそれらを出力する同じ順序である必要性の並べ替え –

+0

ありがとう!これはうまくいくかのように見えますが、私は明日これを試してみましょう。 –

+0

Dannyさん、 どうやって乗りましたか? 辞書の代わりに配列を使用していますか? – MDMonty

4

JSONオブジェクトフィールドには定義済みの注文がありません。

  1. 単一フィールドオブジェクトの配列:キー/値ペアの

    [{"Premiership": array[6]}, 
    {"Championship": array[6]}, 
    {"Division 1": array[6]}, 
    {"Division 2": array[6]}, 
    {"Division 3": array[6]}] 
    
  2. 配列:

    あなたが定義された順序でキー/値のペアをしたい場合は、基本的に2つのオプションがあります
    [["Premiership", array[6]], 
    ["Championship", array[6]], 
    ["Division 1", array[6]], 
    ["Division 2", array[6]], 
    ["Division 3", array[6]]] 
    

追記:私はサンプルデータとJSONとの関係というのハーフ推測しています。私はobjectarray[6]がそこで何をしているのかわかりません。

+0

イムあなたはこれで何を意味するかかなり確実ではない何かのためにそれを必要とするかもしれないと知って、セットアップはJSON-Frameworkは、その中に送られた順序を台無しに解析し、そのわずかな方法を正常に見えます。 –

+1

キー/値の全体点は、配列内の要素を見つけるためにインデックスを知る必要はありません。キー名を使ってデータを順不同で取得できます。索引配列内にデータがない限り、データが特定の順序で保持されるという保証はありません。 – ExitToShell

+0

キーを順番に参照することで、注文が重要になったときにいつでも注文することができます。しかし、辞書の中では、順序は無作為であるという効果的な同等物ではありません。 –