NSXMLParser 和 JSON 解析器的优缺点是什么?
在什么场景下哪个好?
目前,我的应用程序使用 NSXMLParser。如果 JSON 解析器更高效,我打算移动它。
谢谢
NSXMLParser 和 JSON 解析器的优缺点是什么?
在什么场景下哪个好?
目前,我的应用程序使用 NSXMLParser。如果 JSON 解析器更高效,我打算移动它。
谢谢
NSXMLParser
是一个“事件驱动”解析器,它基本上通知委托人有关 XML 文档中某些元素的出现。
事件驱动的解析器本身并不创建 XML 文档的表示。元素的实际处理必须由某个委托来完成。正确使用事件驱动的解析器是复杂且容易出错的,并且需要经验如何处理这样的任务。嗯,你知道的。
NSJSONSerialization
另一方面,我知道的所有其他第三方 JSON 解析器都从 JSON 输入创建一个基础对象(aNSArray
或)。NSDictionary
解析 JSON 文档并获取一个NSDictionary
或一个NSArray
对象只是一个语句的问题。少数还支持“事件驱动”模式。
XML 比 JSON 复杂得多。从本质上讲,JSON 解析器更简单,而且在解析文档时也几乎总是更高效。
尽管它很简单,但 JSON 几乎总是足以表达您的数据。
因此,当您可以用 JSON 表达数据时,无论如何,请使用 JSON。如果可能,请使用NSJSONSerialization
.
其他第三方 JSON 解析器可能会提供额外的功能,例如事件驱动 API,一种处理数据块的改进方法,具有更复杂的选项来自定义某些边缘情况,例如处理 Unicode NULL 字符、Unicode 非字符、如何转换 JSON数字等,并且可能比NSJSONSerialization
.
今天,NSJSONSerialization
它和 JSONKit 一样快。(对于某些输入,JSONKit 更快一些)。AFAIK,有两个第三方解析器几乎总是比任何输入都快NSJSONSerialization
,尤其是在 arm 上,以及在转换数字时。您可以期望它们在 1 到 2 的范围内更快。但是考虑到解析 JSON 几乎从来都不是性能问题的罪魁祸首。