我使用的API会在每个JSON响应之前加上)]}'
,显然是一种安全措施。 e.g。
response.body=)]}',
[{"id":13,"name":"Demo Company","total_amount_due":15714.2}]
RestKit无法映射,因此我需要在映射之前从响应中删除第一个项目。
这样做的最佳方式是什么?
答案 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"];