QA@IT

objective-c JSONValue

2280 PV

objective-cのJSONValueを使用して、文字列をJSONに変換したいのですが、以下の処理をすると並び順がかわってしまいます。
原因わかるかたいませんでしょうか?よろしくお願いします。

NSString responseString = [_request responseString];
NSDictionary *dic = [[NSDictionary alloc]initWithDictionary:(NSDictionary
)[responseString JSONValue]];

【元データ(responseString)】
{"4@新宿エリア":64,"5@渋谷/五反田エリア":32,"6@六本木エリア":12,"3@池袋エリア":32,"7@上野エリア":20,"2@新橋/銀座エリア":10,"9@神田/秋葉原エリア":14,"1@西東京エリア":55,"8@東東京エリア":10}

【dicのKeys】
池袋エリア、渋谷/五反田エリア、六本木エリア、新宿エリア、新橋/銀座エリア、神田/秋葉原エリア、西東京エリア、東東京エリア、上のエリア

回答

NSDictionary にしても JSON の object にしても、順序は保証しない構造になっているためです。順序が重要なら、配列などのデータ構造を使うべきです。

参考:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html
allKeys の説明に下記の記述がある。

The order of the elements in the array is not defined.

http://www.json.org/json-ja.html

オブジェクトは、順序付けされない名前/値のペアのセットです。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。