JSON解析与RestKit
问题描述:
单字符串元素的列表如何配置RestKit解析此JSON:JSON解析与RestKit
{"platform":["This field is required."],"push_token":["This field is required."]}
可以在此JSON的RestKit支持不同的各套场的?如示例所示,只有一个字段“平台”或一个字段“push_token”或两个字段。
UPD:
@interface Register : NSObject
@property (nonatomic, copy) NSString * platform;
@property (nonatomic, copy) NSString * push_token;
+ (void) initEntityForRestKit;
+ (NSString *) getURL;
+ (NSDictionary*) elementToPropertyMappings;
+ (RKObjectMapping *) entityMapping;
@end
@implementation Register
+ (NSString *) getURL {
return @"/api/register/";
}
+ (void) initEntityForRestKit {
RKResponseDescriptor *responseFaultDescriptor = [RKResponseDescriptor
responseDescriptorWithMapping:[Register entityMapping]
pathPattern:[Register getURL]
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError)];
[[RKObjectManager sharedManager] addResponseDescriptor:responseFaultDescriptor];
}
+ (NSDictionary*)elementToPropertyMappings {
return @{@"platform":@"platform",
@"push_token":@"push_token"};
}
+ (RKObjectMapping *) entityMapping {
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Register class]];
[mapping addAttributeMappingsFromDictionary:[Register elementToPropertyMappings]];
return mapping;
}
@end
UPD2:
2015-09-30 17:22:18.756 test[50727:2976562] E restkit.network:RKObjectRequestOperation.m:215 POST 'http://test.com/api/register/' (400 Bad Request/0 objects) [request=0.2629s mapping=0.0000s total=0.4324s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1011 "Loaded an unprocessable error response (400)" UserInfo=0x7fad39651530 {NSLocalizedDescription=Loaded an unprocessable error response (400), NSErrorFailingURLKey=http://test.com/api/register/}
2015-09-30 17:22:18.756 test[50727:2976487] E app:AppDelegate.m:89 Load failed with error: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1011 "Loaded an unprocessable error response (400)" UserInfo=0x7fad39651530 {NSLocalizedDescription=Loaded an unprocessable error response (400), NSErrorFailingURLKey=http://test.com/api/register/}
答
我刚才检查的Restkit
的源代码。如果它是一个错误响应,它总是会返回一个错误。你可以根据你的情况调试下面的代码。
// If the response is a client error return either the mapping error or the mapped result to the caller as the error
if (isErrorStatusCode) {
if ([self.mappingResult count] > 0) {
error = RKErrorFromMappingResult(self.mappingResult);
} else {
// We encountered a client error that we could not map, throw unprocessable error
if (! error) error = RKUnprocessableErrorFromResponse(self.response);
}
self.error = error;
[self willFinish];
return;
}
您可以在这里找到的代码https://github.com/RestKit/RestKit/blob/development/Code/Network/RKResponseMapperOperation.m#L378
不清楚你在问什么,告诉你正在试图映射到类定义。 – Wain
@完成了。但是这段代码不起作用:) – ftp27
在这里感到困惑,你是说上面的代码不能解析你上面提到的json吗?或者你只是问上面的代码是否适合你的目的? –