-1

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

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

JSON结构的一个例子:

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

2 回答 2

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];

}
于 2015-01-26T17:04:03.257 回答
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]];
}
于 2015-01-26T08:42:43.147 回答