用于Objective-C的JSON解析器的比较(JSON框架,YAJL,TouchJSON等)


142

据我所知,Objective-C,JSON FrameworkYAJLTouch JSON有三个JSON解析器。然后,这三个将具有自己的特征。

例如:
YAJL可以用作SAX样式解析器。
JSON框架的历史比较悠久,已被广泛使用。
触摸JSON解析NSData而不是NSString。

另外,据我测试,性能比较的结果如下:
[快速] YAJL> JSON框架>触摸JSON [慢]。

如果您了解这些JSON解析器的优缺点,可以告诉我吗?
最后,如果您知道其他JSON解析器,请告诉我。


1
我投票!这是一个很好的问题。希望一些专家回答这一问题。我一直都在使用JSON Framework,但是,我很想知道其他解析器的优缺点。
Chintan Patel

谢谢金丹。我也在使用JSON框架,没有抱怨。但是,我希望有人能给我们一个很好的答案。
10年

5
关于Obj-C的流JSON解析器呢?我想拥有一个解析器,该解析器将在解析新对象时告诉它是委托人,例如,当您从服务器下载大型JSON时,您可以开始处理已收到的部分。它还可能会减少内存占用量。
MartijnThé10年


1
全面审查
ohho 2011年

Answers:


59

如果您正在寻找速度,请查看JSONKit。(通常)比已经提到的JSON库快很多,通常快一个数量级。而且由于它是“最近实例化的对象缓存”,因此(通常)同样会使用更少的内存。


2
我可以确认这一点:)在我的测试中,JSONKit比YAJL快两倍,比JSON Framework快50%,但是显然我用于测试的数据是JSONKit的最坏情况。
库巴·苏德

2
其次。请记住在发布版本中设置NS_BLOCK_ASSERTIONS标志。它甚至进一步提高了速度。
DenTheMan 2011年

1
AFAICT JSONKit不支持基于流的解析,因此,如果这是一个问题,则可能要使用json-framework或YAJL。
Frank Schmitt

JSONKit的性能。推荐人:cocoanetics.com的综合评论
哦,2012年

2
截至目前,看来JSONKit已被作者放弃。最新版本的XCode出现了一些问题,修复了许多拉请求,并且没有一个被接受。
卢克晦涩难忘的

12

考虑到我所做的比较,最快的库是JSONKit,其次是NSJSONSerialization(现在为公共API)和NextiveJSON。SBJSON和TouchJSON比之前的3个库慢一些。

比较是使用带有iOS 5.0.1的iPhone 4S完成的。


1
投票赞成NSJSONSerialization是公共API的一部分!我会坚持下去,因为维护不会有任何麻烦。
约翰内斯

同上。对我来说,NSJSONSerialization是明智的选择-至少针对iOS 5.0及更高版本。
Quintin Willison

答案链接已断开。请修复它
Ossir

5

还有这个解析器

我不记得我是如何偶然发现它的,但它看起来既轻巧又简单,所以我认为它很适合我的需求。我添加了事件以便从NSData添加初始化。当我需要分析小的响应时,我并不关心性能。知道它的性能会很有趣。


到目前为止,这是我迄今为止使用的最轻量,最简单的JSON解析器。
开尔文

哇,让我开心。如此简单优雅的解析器!
thandasoru 2011年




0

为什么不看看akosma在解析器上的基准,在那里他比较各种解析器。如果缺少一个解析器,您最好将其添加到测试中,因为他的代码是开源的。

iPhoneWebServicesClient

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.