ios - RESTKit:在没有映射类的情况下映射 JSON

标签 ios mapping restkit restkit-0.20

下面是我返回的 JSON 响应:

{
    "notificationId": 121,
    "activities": [
    143, 
    149]
}

下面是映射:

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
    [mapping addAttributeMappingsFromDictionary:@{@"notificationId" : @"notificationId",
                                                  @"activities": @"activities"}];

 RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                            method:RKRequestMethodGET
                                                                                       pathPattern:nil
                                                                                           keyPath:@""
                                                                                       statusCodes:statusCodeSet];


[self.objectManager postObject:invitation path:@"/notifications" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

    NSString *notificationId1 = [mappingResult.dictionary valueForKey:@"notificationId"];
    NSArray *activitesArray1 = [mappingResult.dictionary valueForKey:@"activities"];

    NSString *notificationId2 = [mappingResult.dictionary objectForKey:@"notificationId"];
    NSArray *activitesArray2 = [mappingResult.dictionary objectForKey:@"activities"];

    NSLog(@"notificaiton ID %@", notificationId1);
    NSLog(@"Activites %@", activitesArray1);

    NSLog(@"notification ID %@", notificationId2);
    NSLog(@"Activites %@", activitesArray2);

    NSLog(@"Activites Array %@", activitesArray);


    NSLog(@"mappingResult Dictionary %@", mappingResult.dictionary);


} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    NSLog(@"Failusre");
}];

日志:

2014-04-21 19:17:51.273 App[57446:4403] I restkit.network:RKObjectRequestOperation.m:250 POST 'http://www.domain.com/notifications' (200 OK / 1 objects) [request=0.2371s mapping=0.0035s total=0.2446s]
2014-04-21 19:17:51.274 App[57446:60b] notification ID (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites (null)
2014-04-21 19:17:51.274 App[57446:60b] notification ID (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites Array (
)
2014-04-21 19:17:51.275 App[57446:60b] mappingResult Dictionary {
    "" =     {
        activities =         (
            143,
            149
        );
        notificationId = 121;
    };
}

为什么所有的值都是空值?如何将 notificationId 的值作为 NSString 和 activities 返回数组?这可以在不创建映射类的情况下完成吗?

最佳答案

因为你的响应描述符是错误的。应该是:

[RKResponseDescriptor responseDescriptorWithMapping:mapping
                                             method:RKRequestMethodPOST
                                        pathPattern:@"/notifications"
                                            keyPath:nil
                                        statusCodes:statusCodeSet];

以便它与您发送的请求相匹配(POST,而不是 GET 是主要问题)。

关于ios - RESTKit:在没有映射类的情况下映射 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210464/

相关文章:

ios - 使用陀螺仪检测 360° iOS 设备旋转

java - hibernate:如何将变量映射为外键

c# - 使用 pocos 以声明方式定义 xml 序列化

ios - pod install 无法添加源

ios - 列表中列表的 RestKit 对象映射

ios - iOS 的 AWS Cognito SMS 传输问题

ios - 无法在 UITableViewCell 中呈现

performance - 内存映射大文件时应该注意哪些陷阱?

ios - RestKit,问题和标签之间的多对多关系,如 Stackoverflow api

ios - 我如何在不读取 BLE 特性的情况下知道它是否已加密?