Native JSON support in iOS?
是否存在用于从iOS SDK中的服务器解析JSON的类? (类似于用于XML的NSXML,并通过RSS进行扩展。)
自iOS5起,JSON已被本地支持,无需第三者框架。
NSJSONSerialization类支持此功能!
-
您是否建议使用本机类或JSONKit-我听说过使用非本机类的性能原因,并且希望获得一些反馈
-
@Doug表示:bonto.ch/blog/2011/12/08/ JSONKit更快,但是除非您使用大量JSON,否则我认为这不会有太大的不同。
-
NSJSONSerialization仅在iOS 5中有一个错误(我在6中从未发现过),有时会在完全有效的JSON上引发错误。错误消息说,错误域= NSCocoaErrorDomain代码= 3840"操作无法完成。(可可错误3840。)"(字符126附近对象的重复键。)我不知道是什么原因导致错误,因为我无法始终重现它。
iOS 5的更新答案:
JSON支持现在是iOS中带有NSJSONSerialization的本机,但是就性能而言,与JSONKit相比,它显得苍白无力,正如John Englehart在JSONKit自述文件中所述:
UPDATE: (2011/12/18) The benchmarks below were performed before Apples NSJSONSerialization was available (as of Mac OS X 10.7 and iOS 5). The obvious question is: Which is faster, NSJSONSerialization or JSONKit? According to this site, JSONKit is faster than NSJSONSerialization. Some quick"back of the envelope" calculations using the numbers reported, JSONKit appears to be approximately 25% to 40% faster than NSJSONSerialization, which is pretty significant.
这是一篇博客文章,探讨了更具体的基准:iOS比较的JSON库
- 对于任何通过Google或其他类似来源发现此问题的人:下面的bozs答案取代了这个问题。 JSON支持现在是iOS固有的。
-
对于希望将JSONKit与您的应用程序一起使用的应用程序,这些应用程序使用基于iOS的基于引用计数的垃圾收集,在这里您不走运(换句话说,JSONKit文档大胆地提到了将JSONKit与ARC应用程序一起使用时的行为是不明确的)。但是,如果您使用ARC,则无论如何您可能不太在乎内存和性能:-)
-
的确,这就是为什么我说"文档不合时宜" bit.ly/LCRu0x:" JSONKit并非旨在与Objective-C自动引用计数(ARC)一起使用。当使用-fobjc-进行编译时,JSONKit的行为未定义arc。在没有ARC的情况下编译的JSONKit的行为与在ARC中已编译的代码混合在一起的行为在规范上是未定义的,因为目前尚未进行分析以了解此配置是否可以安全使用。在JSONKit中支持ARC。尽管是临时性的,但极不可能支持ARC。"
-
I. E.它可能会起作用,也可能不会起作用,但是如果遇到任何麻烦,您将不得不派遣JSONKit并自己对其进行修复,因为它不会为您解决。
-
@umassthrower我还没有看到几个启用了ARC的生产应用程序的任何问题。我的理解是,这更多的是编译器问题,并且编译器支持ARC和非ARC代码的混合。
此线程中列出了iPhone的几个JSON库:
https://stackoverflow.com/questions/286087/best-json-library-to-use-when-developing-an-iphone-application
关于JSONKit基准测试,当前和iOS版本的运行情况还不算快。创建用于测试速度的测试应用程序后,速度更快,但不如自定义实现OKJSONParser
快
NextiveJson应该是iOS JSON的快速库
NextiveJson