使用RestKit解析嵌套动态JSON

时间:2012-05-18 11:14:10

标签: iphone objective-c ios restkit

我正在尝试使用 RESTKIT

解析以下JSON

{
        "0": {
            "page": {
                "url": "http://www.zmtcdn.com/menus/307/1.jpg",
                "thumb_url": "http://www.zmtcdn.com/menus/307/1_thumb.jpg"
                          }
             },
        "1": {
            "page": {
                "url": "http://www.zmtcdn.com/menus/307/2.jpg",
                "thumb_url": "http://www.zmtcdn.com/menus/307/2_thumb.jpg"
                          }
             },
        "menu_url": "http://www.zomato.com/ncr/restaurants/south-delhi/mathura-road/sagar-ratna-315/menu#tabtop"
}

我所做的与之相对应的课程是: -

@interface ImageCollections : ZomatoObject

@property (nonatomic, strong) NSString* ignore;
@property (nonatomic, strong) NSString* keyTerm;
@property (nonatomic, strong) ImageUrl*  menus;
@property (nonatomic, strong) ImageUrl* photos;

@end

并且相应的实现是

+ (RKObjectMapping *) getObjectMapping
{
    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[ImageCollections class]];
    [objectMapping mapKeyPath:@"menu_url" toAttribute:@"ignore"];
    objectMapping.forceCollectionMapping = YES;
    [objectMapping mapKeyOfNestedDictionaryToAttribute:@"keyTerm"];
    [objectMapping mapKeyPath:@"(keyTerm).page" toRelationship:@"menus" withMapping:[ImageUrl getObjectMapping]];
    return objectMapping;
}

类似地,ImageUrl Class的对象映射是

+ (RKObjectMapping *) getObjectMapping
{
    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[ImageUrl class]];
    [objectMapping mapKeyPath:@"url" toAttribute:@"url"];
    [objectMapping mapKeyPath:@"thumb_url" toAttribute:@"thumbUrl"];
    return objectMapping;
}

但我得到了一个例外

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key page.'

请帮助..

1 个答案:

答案 0 :(得分:0)

正在评估页面密钥路径的值是多少?您是否尝试使用单元测试来执行映射?