如何在RestKit中映射JSON数组

5

我遇到了一些问题,无法将JSON数组映射到RestKit。这是JSON文件的样子:

{"issuelist":[
    {
        "issue":[
            {
                "id":1,
                "beschreibung":"",
                "name":"Test1"
            },
            {
                "id":2,
                "beschreibung":"",
                "name":"Test2"
            }
        ]
    }
]}

我对"issue"数组很感兴趣。这是一个单个问题的映射:

RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class] usingBlock:^(RKObjectMapping *mapping) {
        [mapping mapAttributes:@"name", @"beschreibung", nil];
        [mapping mapKeyPathsToAttributes:
                @"id", @"identifier",
                nil];
    }];

这是我设置对象映射的方式:
RKObjectMappingProvider *omp = [RKObjectManager sharedManager].mappingProvider;

RKObjectMapping *issueMapping = [Issue mapping];
[omp addObjectMapping:issueMapping];

[omp setObjectMapping:issueMapping forKeyPath:@"issuelist.issue"];

很遗憾,这并不起作用。我得到了如下日志输出:
T restkit.object_mapping:RKObjectMappingOperation.m:152 在关键路径'name'处找到可转换的值。从类型'__NSArrayI'转换为'String'
W restkit.object_mapping:RKObjectMappingOperation.m:232 关键路径'name'的值转换失败。没有将'__NSArrayI'转换为'String'的策略
T restkit.object_mapping:RKObjectMappingOperation.m:339 跳过从关键路径'name'到'名称'的属性值映射--值未更改((null))
T restkit.object_mapping:RKObjectMappingOperation.m:322 将属性值keyPath 'beschreibung'映射到'beschreibung'
T restkit.object_mapping:RKObjectMappingOperation.m:152 在关键路径'beschreibung'处找到可转换的值。从类型'__NSArrayI'转换为'String'
W restkit.object_mapping:RKObjectMappingOperation.m:232 关键路径'beschreibung'的值转换失败。没有将'__NSArrayI'转换为'String'的策略
T restkit.object_mapping:RKObjectMappingOperation.m:339 跳过从关键路径'beschreibung'到'beschreibung'的属性值映射--值未更改((null))
T restkit.object_mapping:RKObjectMappingOperation.m:322 将属性值keyPath 'id'映射到'标识符'
T restkit.object_mapping:RKObjectMappingOperation.m:152 在关键路径'id'处找到可转换的值。从类型'__NSArrayI'转换为'String'
W restkit.object_mapping:RKObjectMappingOperation.m:232 关键路径'id'的值转换失败。没有将'__NSArrayI'转换为'String'的策略
T restkit.object_mapping:RKObjectMappingOperation.m:339 跳过从关键路径'id到关键路径'identifier'的属性值映射--值未更改((null))
D restkit.object_mapping:RKObjectMappingOperation.m:624 成功完成映射操作...

看起来RestKit试图在一个问题中映射整个数组,而不是创建一个问题数组。我需要如何更改我的映射才能纠正这个问题?

感谢您的帮助!

1个回答

9

试试这个:

RKObjectMapping* issueMapping = [RKObjectMapping mappingForClass: [Issue class] usingBlock:^(RKObjectMapping *mapping) {
    [mapping mapAttributes:@"name", @"beschreibung", nil];
    [mapping mapKeyPathsToAttributes:
     @"id", @"identifier",
     nil];
}];
issueMapping.rootKeyPath = @"issue";
[omp setObjectMaping: issueMapping forKeyPath: @"issuelist"];

这段话的意思是,当遇到 issuelist keypath 时使用 issueMapping。然后对于每个根问题,创建一个 Issue 对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接