我在iOS上使用RestKit http://restkit.org。我定义了一个对象和一个对象映射,可以使用它来与服务器发送和接收数据。但是对于我的映射对象,我想使用-description方法返回JSON映射以便记录到控制台。
如何将对象映射到字符串?
答案 0 :(得分:6)
对象映射现在已经在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];
答案 1 :(得分:5)
我想出了一个解决方案
- (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];
}