在RestKit映射之前访问JSON响应

时间:2014-07-31 23:54:26

标签: ios objective-c json restkit

我使用的API会在每个JSON响应之前加上)]}',显然是一种安全措施。 e.g。

response.body=)]}',
[{"id":13,"name":"Demo Company","total_amount_due":15714.2}]

RestKit无法映射,因此我需要在映射之前从响应中删除第一个项目。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

通过制作MyJsonSerialization课程来解决这个问题:

@interface MyJsonSerialization : NSObject <RKSerialization>

@end


@implementation MyJsonSerialization

+ (id)objectFromData:(NSData *)data error:(NSError **)error
{
    NSString* responseStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSData *refinedData = data;

    if ([responseStr hasPrefix:@")]}',"]){
        NSRange range = NSMakeRange(5, data.length - 5);
        refinedData = [data subdataWithRange:range];
    }

    id result = [NSJSONSerialization JSONObjectWithData:refinedData options:0 error:error];

    return result;
}

+ (NSData *)dataFromObject:(id)object error:(NSError **)error
{
    return [NSJSONSerialization dataWithJSONObject:object options:0 error:error];
}

@end

并像这样使用它:

[RKMIMETypeSerialization registerClass:[MyJsonSerialization class] forMIMEType:@"application/json"];