我想创建一个json字符串以保存在NSUserDefaults
中,然后从中恢复。
我已经将RestKit添加到我的项目中,以便从服务器发送和接收对象。 但是,现在我想展平并保存数据。
如何使用restkit获取对象的JSON字符串?
答案 0 :(得分:3)
我需要相同的功能(在我的情况下,将JSON作为multipart属性发送),所以经过一段时间的搜索,我得到了解决方案。
您可以使用RestKit获取JSON数据(和JSON字符串),您必须传递要转换的对象以及要用于转换的映射。
RKRequestDescriptor *descriptorObject = ...
Custom *object = ...
NSDictionary *parametersForObject = [RKObjectParameterization parametersWithObject:object requestDescriptor:descriptorObject error:nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parametersForObject
options:NSJSONWritingPrettyPrinted //Pass 0 if you don't care about the readability of the generated string
error:&error];
NSString *jsonString;
if (! jsonData) {
NSLog(@"Got an error: %@", error);
}
else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
我没有找到这个记录,我只是发现它浏览代码,我不确定它是公共API还是私有API。至少,它适用于RestKit 0.20
答案 1 :(得分:1)
你一般不这样做。 RestKit仅作为网络通信的一部分串行化为JSON。在这种情况下,您将从内部数据格式转换为外部数据格式。在您的情况下,您希望存储一段时间的内部数据格式。在这种情况下,使用NSJSONSerialization
更容易。为此,您需要创建一个字典/数组,然后使用dataWithJSONObject:options:error:
。
从技术上讲,要做你所要求的,你会使用RKMappingOperation
。这是使用initWithSourceObject:destinationObject:mapping:
完成的,其中源对象是从JSON(JSONObjectWithData
)创建的字典,目标对象是映射所针对的对象的新实例,映射是您的映射使用。