【问题标题】:NSJSONSerialization from NSString来自 NSString 的 NSJSONSerialization
【发布时间】:2012-02-10 03:25:59
【问题描述】:

如果我有一个 NSString 并且我想使用 NSJSONSerialization,是否可以?我该怎么做?

【问题讨论】:

标签: ios objective-c iphone ipad nsjsonserialization


【解决方案1】:

您可以通过以下方式将字符串转换为 NSData:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

然后您可以将它与NSJSONSerialization 一起使用。但是请注意,NSJSONSerialization 仅适用于 iOS5,因此您最好使用 TouchJSON 或 JSONKit 之类的库,它们都可以让您直接使用字符串,从而节省了转换为 NSData 的步骤。

【讨论】:

    【解决方案2】:

    您需要将您的NSString 转换为NSData,此时您可以使用+[NSJSONSerialization JSONObjectWithData:options:error:] 方法。

    NSString * jsonString = YOUR_STRING;
    NSData * data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError * error = nil;
    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    if (!json) {
        // handle error
    }
    

    【讨论】:

      【解决方案3】:

      首先,您需要通过执行以下操作将您的 NSString 转换为 NSData

      NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];
      

      然后只需使用JSONObjectWithData 方法将其转换为 JSON

      id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
      

      【讨论】:

      • 为了方便,可以把这段代码放到NSJSONSerialization Category中。
      • 谨慎使用 'NSJSONSerialization JSONObjectWithData',虽然它有一个 NSError* 参数,但在发生错误时可能会抛出异常!建议用 '@try {} @catch(...)' 块括起来。
      【解决方案4】:

      我写了一篇博文,演示了如何将原生 iOS JSON 类与使用原生 iOS JSON 类的实现一起包装在通用协议中。

      这种方法使使用本机功能变得更加容易,并减少了您必须编写的代码量。此外,如果原生实现被证明是不够的,它可以更容易地使用 JSONKit 等切换原生实现。

      http://danielsaidi.com/blog/2012/07/04/json-in-ios

      博客文章包含您需要的所有代码。只需复制/粘贴 :)

      希望对你有帮助!

      【讨论】:

      • 请注意该帖子已有 5 年历史 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2015-10-10
      • 1970-01-01
      相关资源
      最近更新 更多