【问题标题】:Get JSON string for my object with RestKit使用 RestKit 为我的对象获取 JSON 字符串
【发布时间】:2014-02-26 14:58:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios json restkit restkit-0.20


    【解决方案1】:

    我需要相同的功能(在我的情况下,将 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 库,并编写了一个简单的 3 方法类来将请求发送到服务器。 RestKit 也没有(或至少没有记录)https 处理。这是我放弃它的主要原因。
    • @LenaBru 我们使用带有 https 的 RestKit,我们没有任何问题。无论如何,我也认为 RestKit 有很多特性,而且它可能会被记录得更好。对于某些项目,它有很多开销,并且不需要这种大小的库,但对于其他一些项目,它可能非常有用。与计算机世界一样,这取决于具体情况。
    • 好吧,我确信有办法做到这一点。但是对于一个 20MB 的库,很难找到它。我用一个 1.5MB 的库替换了它,它完全符合我的需要,而不是更多;)感谢您的帮助,我将来可能需要您的回答
    【解决方案2】:

    你通常不会。 RestKit 仅作为网络通信的一部分序列化为 JSON。在这种情况下,您正在从内部数据格式转换为外部数据格式。在您的情况下,您希望将内部数据格式存储一段时间。在这种情况下,使用NSJSONSerialization 会更容易。为此,您需要创建一个字典/数组,然后使用dataWithJSONObject:options:error:

    从技术上讲,要按照您的要求进行操作,您将使用RKMappingOperation。这是使用 initWithSourceObject:destinationObject:mapping: 完成的,其中源对象是从 JSON (JSONObjectWithData) 创建的字典,目标对象是映射所针对的对象的新实例,而映射是您要使用的映射。

    【讨论】:

    • 怎么样?我正在使用 RestKit 0.20.3 - 请不要将我发送到文档,它有 0.20.3 中已弃用的类,你能告诉我怎么做吗?我将如何使用 NSJSONSerialization ?
    • 请帮助我,我查看了几个 json 序列化器和反序列化器,我得到的只是:+[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'
    • 尝试改用 JSONObjectWithData。
    • 添加了一些信息。我只是告诉你当前 SDK 中的类。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多