如何使用逆映射将NSManagedObject序列化为restkit 0.20中的JSON?
现在我不需要在任何地方发布任何内容。
我想手动创建对象MyObjectManaged。 设置一些属性,例如: ID, 名称, 年龄
使用现有映射将映射映射到JSON属性: 用户身份, 名字, 年龄
创建并打印JSON。
有可能吗?什么时候,怎么样? 提前感谢您的回答。
答案 0 :(得分:7)
我最近一直试图做同样的事情:)我想保留映射,以便最终我可以连接到服务器,但也重复使用它们将对象序列化到文件。
我使用inverseMapping并通过RKMappingOperation运行它。
首先从JSON设置映射 - >核心数据对象
RKEntityMapping mapping = [RKEntityMapping mappingForEntityForName:@"MyManagedObject" inManagedObjectStore:rkManagedObjectStore];
[self.nodeMapping addAttributeMappingsFromDictionary:@{
@"userid": @"id",
@"first_name": @"name",
@"age": @"age"
}];
然后使用逆映射将对象实例(例如“myObject”)映射到字典:
NSMutableDictionary *jsonDict = [NSMutableDictionary dictionary];
RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new];
RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:myObject
destinationObject:jsonDict
mapping:[mapping inverseMapping]];
operation.dataSource = dataSource;
NSError *error = nil;
[operation performMapping:&error];
假设没有错误,您可以序列化字典:
NSData *data = [RKMIMETypeSerialization dataFromObject:jsonDict
MIMEType:RKMIMETypeJSON
error:&error];
不确定你想从那里做什么,但是如果你想将它打印成字符串,你可以这样做:
NSString *jsonString = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding]
希望有所帮助
答案 1 :(得分:3)
John Martin的回答似乎有效,但我遇到的问题是NSManagedObject实例带有一个用
设置的NSNumber属性[NSNumber numberWithBool:boolvalue]
将json序列化为值1/0而不是true / false。 我们的后端无法像布尔一样处理数字。
我使用内置的RestKit解决了这个问题:RKObjectParameterization
使用follow方法,当有一个设置为bool的NSNumber属性时,我的NSManagedObjects被正确序列化了。
+ (NSString *)getJsonObjectWithDescriptor:(RKRequestDescriptor *)requestDescriptor objectToParse:(id)objectToParse {
NSError *error = nil;
NSDictionary *jsonDict = [RKObjectParameterization parametersWithObject:objectToParse requestDescriptor:requestDescriptor error:&error];
NSData *data = [RKMIMETypeSerialization dataFromObject:jsonDict
MIMEType:RKMIMETypeJSON
error:&error];
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
答案 2 :(得分:0)
您可以访问RestKit wiki并查看object mapping。在“对象参数化和序列化”一节中,您将找到有关序列化和逆映射的信息。