RestKit使用嵌套的JSON

时间:2015-03-17 16:36:30

标签: json restkit restkit-0.20

我很难使用RestKit来获取我需要的数据。

我试图接触"工作"此JSON文件中的数据。

    {
      response: {
      accountResult: 1,
      accounts: [{
         userDetail: {
           idString: "de454657",
           idName: "alpha"
         },
         deptId: 245,
         jobs: [{
            jobId: "584349964",
            payHash: 566889,
            uniform: {
                color: "blue",
                tie: "red"},
            shoes: {
                color: "black",
                laces: "black"}
         },
         {
            jobId: "584349965",
            payHash: 566867,
            uniform: {
                color: "blue",
                tie: "red"},
            shoes: {
                color: "black",
                laces: "black"}
         },
         {
            jobId: "584349978",
            payHash: 566879,
            uniform: {
                color: "blue",
                tie: "red"},
            shoes: {
                color: "black",
                laces: "black"}
           }]
         }]
        }
    }

我可以成功映射到"帐户"级别并映射到" idName"等项目。和" deptID"但我无法确定如何到达"工作"数据

    keyPath:@"response.accounts.jobs"

没有成功的工作。怎么做到这一点?我是映射到类而不是核心数据,如果这对于获得这些数据有所不同。

感谢您提供任何帮助或建议。

更新 - 获取数据的解决方案,但不是原始问题的解决方案,询问是否有方法可以直接获取作业数据。

我有解决方案,但仍在寻找任何有解决方法的人。

从"工作"是" accounts"中的JSON数组。数组我可以通过两个映射来解析作业 - 首先是帐户,然后是作业。

    RKObjectMapping* accountMapping = [RKObjectMapping mappingForClass:[Account class]];
    [accountMapping addAttributeMappingsFromDictionary:@{@"deptId":@"deptID"}];

    RKObjectMapping* jobMapping = [RKObjectMapping mappingForClass:[Job class]];
    [jobMapping addAttributeMappingsFromDictionary:@{@"jobId":@"jobID"}];

    [accountMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"jobs"
                                                                              toKeyPath:@"job"
                                                                             withMapping:jobMapping]];

有没有办法直接映射到工作而无需读入帐户?我只需要文件中所有作业的列表 - 我的项目不需要帐户信息或他们的关系。使用上面我显然可以读取两个数据点,然后只使用我需要的工作数据 - 我希望有人知道一种方法可以避免同时提取(帐户和工作)以及提取工作信息的方法吗?

1 个答案:

答案 0 :(得分:0)

不,你不能。具有多个映射的解决方案是正确的方法。如果您不需要'container'对象,那么您可以在映射完成后将其丢弃,但是您无法直接索引到数组中,因此无法深入到该级别。