使用RestKit获取我的对象的JSON字符串

时间:2014-02-03 07:41:03

标签: ios json restkit restkit-0.20

我想创建一个json字符串以保存在NSUserDefaults中,然后从中恢复。

我已经将RestKit添加到我的项目中,以便从服务器发送和接收对象。 但是,现在我想展平并保存数据。

如何使用restkit获取对象的JSON字符串?

2 个答案:

答案 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)创建的字典,目标对象是映射所针对的对象的新实例,映射是您的映射使用。