iOS:使用JSONModel,如何使用数字键获取字典?

时间:2015-01-26 08:37:08

标签: ios iphone json jsonmodel

我目前正在使用icanzilb的JSONModel来解析我在线获得的JSON结构。问题是我有一个有数字键的字典,而且这些数字键是由服务器按需生成的。所以从理论上讲,我对这些数字键的含义没有预先了解。所以在这种情况下,我无法将@property添加到我的JSON数据头文件中。

关于如何处理这种情况的任何想法?

JSON结构的一个示例:

{
 "Content":[
             {
              "0":{...},
              "1":{...},
              "2":{...},
              "Forum":"1",
              "Member": "Michael",
             }
          ],
 "Count":"5"
}

2 个答案:

答案 0 :(得分:1)

您无法根据JSON响应动态地向本机对象添加属性,但您可以拥有一个NSMutableDictionary属性,并仅使用动态的数字键/对象填充该属性。

-(void)fillMyDictionaryProperty {

    NSCharacterSet *nonNumericSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];


    for (NSString *key in jsonDictionary.allKeys) {

        if ([key rangeOfCharacterFromSet:nonNumericSet].location == NSNotFound) {

            id object = [jsonDictionary objectForKey:key];
            [myMutableDictionary setObject:object forKey:key];

        }

    }

}

然后您可以使用它来获取与该键相关联的对象

-(id)getPropertyWithNumber:(NSInteger)num {

    NSString *key = [NSString stringWithFormat:@"%li", (long)num];
    return [myMutableDictionary objectForKey:key];

}

答案 1 :(得分:0)

首先获取Content数组中的字典。然后得到字典的数量,你知道字典中的所有对都有除最后两个之外的数字键值。你可以得到如下数值的计数。

NSArray *array = [jsonString valueForKey:@"Content"];
NSDictionary *dict = [array objectAtIndex:0];

//Count of numeric keys in dict

int count = [dict count]-2;

之后,您可以循环获取所有数字键值。

for(int i=0;i<count;i++) 
{

    NSDictionary *valueDict = [dict valueForKey:[NSString stringWithFormat:@"%d",i]];
}