使用ObjC RestKit库如何将对象映射到JSON NSString *

时间:2011-10-04 06:23:36

标签: ios json restkit

我在iOS上使用RestKit http://restkit.org。我定义了一个对象和一个对象映射,可以使用它来与服务器发送和接收数据。但是对于我的映射对象,我想使用-description方法返回JSON映射以便记录到控制台。

如何将对象映射到字符串?

2 个答案:

答案 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];
}