【发布时间】:2014-02-26 14:58:20
【问题描述】:
我想创建一个 json 字符串保存在 NSUserDefaults 中,然后从中取回。
我已经将 RestKit 添加到我的项目中,用于从服务器发送和接收对象。 但是,现在我想展平并保存数据。
如何使用 restkit 获取对象的 JSON 字符串?
【问题讨论】:
标签: ios json restkit restkit-0.20
我想创建一个 json 字符串保存在 NSUserDefaults 中,然后从中取回。
我已经将 RestKit 添加到我的项目中,用于从服务器发送和接收对象。 但是,现在我想展平并保存数据。
如何使用 restkit 获取对象的 JSON 字符串?
【问题讨论】:
标签: ios json restkit restkit-0.20
我需要相同的功能(在我的情况下,将 JSON 作为多部分属性发送),所以经过一段时间的搜索,我得到了解决方案。
您可以使用带有该代码的 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
【讨论】:
你通常不会。 RestKit 仅作为网络通信的一部分序列化为 JSON。在这种情况下,您正在从内部数据格式转换为外部数据格式。在您的情况下,您希望将内部数据格式存储一段时间。在这种情况下,使用NSJSONSerialization 会更容易。为此,您需要创建一个字典/数组,然后使用dataWithJSONObject:options:error:。
从技术上讲,要按照您的要求进行操作,您将使用RKMappingOperation。这是使用 initWithSourceObject:destinationObject:mapping: 完成的,其中源对象是从 JSON (JSONObjectWithData) 创建的字典,目标对象是映射所针对的对象的新实例,而映射是您要使用的映射。
【讨论】: