我在iOS上使用RestKit http://restkit.org。我定義了一個對象和一個對象映射,並可以使用它來與服務器發送和接收數據。但是對於我的映射對象,我希望使用-description方法來返回JSON映射以便記錄到控制檯。使用ObjC RestKit庫如何將對象映射到JSON NSString *
如何將對象映射到字符串?
我在iOS上使用RestKit http://restkit.org。我定義了一個對象和一個對象映射,並可以使用它來與服務器發送和接收數據。但是對於我的映射對象,我希望使用-description方法來返回JSON映射以便記錄到控制檯。使用ObjC RestKit庫如何將對象映射到JSON NSString *
如何將對象映射到字符串?
我想出了一個解決方案
- (NSString*)description
{
RKObjectMappingProvider * provider = [RKObjectManager sharedManager].mappingProvider;
RKObjectMapping* mapping = [provider objectMappingForClass:[self class]];
RKObjectSerializer * serializer = [RKObjectSerializer serializerWithObject:self mapping:mapping];
NSError * error;
return (NSString *)[serializer serializedObjectForMIMEType:RKMIMETypeJSON error: &error];
}
對象映射現在已經在RESKIT的新版本大幅改變RestKit ObjectMapping 2.0,並@ bradgonesurfing的答案不會在這些較新的版本。
現在,您需要使用RKObjectParameterization
執行對象序列如下:
RKObjectMapping *itemMapping = [RKObjectMaping mappingForClass:[Item class]];
/* Your object mapping definition for the Item class goes here */
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:itemMapping.inverseMapping objectClass:[Item class] rootKeyPath:nil method:RKRequestMethodPOST];
NSDictionary *dict = [RKObjectParameterization parametersWithObject:item requestDescriptor:requestDescriptor error:nil];
NSData *jsonData = [RKMIMETypeSerialization dataFromObject:dict MIMEType:RKMIMETypeJSON error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];