将JSON String转换为具有相同顺序的NSDictionary

时间:2015-01-26 20:16:37

标签: objective-c json dictionary nsdictionary

我有一个来自服务器的json字符串,该字符串是一个包含字典数组的字典。每个字典代表一个对象,我需要将其转换为NSString并从中获取md5哈希。 所以看起来像这样: - dict - >数组 - > obj1(dict),obj2(dict)e.t.c ... 这一切都很好,但是在服务器的json字符串中我有一个给定的订单。所以当我从数组中获取obj字典时,顺序是不正确的,当然,我的每个对象的md5都不等于服务器上的md5,这是在服务器上制作的。

将json字符串转换为NSDictionary时可以选择保存顺序吗? 我也尝试过M13OrderedDictionary lib,但没有成功。 我做的代码:

- (void)mainMethod
{
    NSDictionary *dict = [jsonString objectFromJSONString]; 
    NSArray *arr = dict[@"params"];
    for (NSDictionary *obj in arr)
    {
          NSString *jsonString = [package JSONString];
          NSString *md5 = [jsonString MD5];
          [arrayOfMD5 addObject:md5];
    }
}

// Categories in other classes
- (id)objectFromJSONString
{
    NSError *serializationError = nil;
    id result = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding]
                                                   options:0
                                                     error:&serializationError];
    if (serializationError)
    {
        DDLogError(@"Failed unserialising JSON: %@", serializationError.localizedDescription);
    }
    return result;
}

- (NSString *) JSONString
{
    NSError *serializationError = nil;
    NSData *data = [NSJSONSerialization dataWithJSONObject:self options:0 error:&serializationError];
    if (serializationError)
    {
        DDLogError(@"Failed serialising JSON: %@", serializationError.localizedDescription);
    }
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

0 个答案:

没有答案