1

我正在尝试将原始 json 字符串转换为 NSDictionary。但是在 NSDictionary 上,我得到了与 json 字符串不同的对象顺序,但我在 NSDictionary 中需要与 json 字符串完全相同的顺序。以下是我用来转换 json 字符串的代码

 SBJSON *objJson = [[SBJSON alloc] init];
 NSError *error = nil;
 NSDictionary *dictResults = [objJson objectWithString:jsonString error:&error];
4

3 回答 3

1

来自NSDictionary 的类参考:

键的顺序未定义。

所以,基本上你不能在使用标准的 NSDictionary 时这样做。

然而,这可能是继承 NSDictionary 本身的一个很好的理由。有关详细信息,请参阅此问题

于 2012-08-08T10:18:30.333 回答
0
//parse out the json data
    NSError* error;


NSDictionary* json = [NSJSONSerialization 
        JSONObjectWithData:responseData //1

        options:kNilOptions 
        error:&error];

    NSArray* latestLoans = [json objectForKey:@"loans"]; //2

    NSLog(@"loans: %@", latestLoans); //3

来源:点击此链接http://www.raywenderlich.com/5492/working-with-json-in-ios-5 很好的教程,但仅适用于 iOS5

于 2012-08-08T10:17:17.367 回答
0

NSDictionary 是一个关联数组,不保留其元素的顺序。如果您知道所有键,那么您可以创建一些数组,以正确顺序保存所有键(您也可以将它与 JSON 作为附加参数一起传递)。例子:

NSArray* ordered_keys = [NSArray arrayWithObjects: @"key1", @"key2", @"key3", .., nil];

for(NSString* key is ordered_keys) {
    NSLog(@"%@", [json_dict valueForKey: key]);
}
于 2012-08-08T10:19:05.590 回答