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