RestKit 使用嵌套 JSON

RestKit using nested JSON

我在使用 RestKit 获取我需要的数据时遇到困难。

我正在尝试获取此 JSON 文件中的 "jobs" 数据。

    {
      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"}
           }]
         }]
        }
    }

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

    keyPath:@"response.accounts.jobs"

未成功运行。如何做到这一点?我正在映射到 class 而不是核心数据,如果这对获取此数据有影响的话。

感谢您的帮助或建议。

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

我有解决方案,但仍在寻找解决方法。

由于 "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]];

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

不,你不能。您使用多个映射的解决方案是正确的方法。如果不需要 'container' 对象,则可以在映射完成后丢弃它,但不能直接索引到数组中,因此不能向下钻取到该级别。