iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

26 | 如何提高 JSON 解析的性能?

使用方法
解析思路
值的语法
有序值列表
名字/值对集合
总结文章内容
simdjson
JSONSerialization
decode 方法
描述页面布局
描述业务逻辑
描述代码逻辑
JSON 的结构
JSON 的起源
课后小作业
小结
提高 JSON 解析性能
JSONDecoder 如何解析 JSON?
JSON 的使用场景
什么是 JSON?
如何提高 JSON 解析的性能?

该思维导图由 AI 生成,仅供参考

你好,我是戴铭。
在 iOS 开发中,我们都会碰到这样的问题:不同团队开发的库需要进行数据通信,而通信数据规范通常很难确定。今天,我们就来聊聊如何高效地解决这个问题吧。
同一个编程语言之间的数据通信非常简单,因为数据的规范都是相同的,所以输入和输出不需要做任何转换。但是,在不同编程语言之间进行数据通信,就会比较麻烦了。比如,一种语言按照自身的标准规范输出了一份数据,另一门语言接收到时需要依据自身编程语言标准进行数据对齐。
对齐一门语言的数据或许你还能够接受,但是如果对接的语言多了,你就需要写很多份能够与之对应的数据对齐转换代码。编写和维护的成本可想而知,那么目前有没有一种通用,而且各个编程语言都能支持的数据格式呢?
答案是有的。这个数据格式,就是我今天要跟你聊的 JSON。
接下来,在今天这篇文章中,我会先和你聊聊什么是 JSON;然后,再和你说说 JSON 的使用场景,以及 iOS 里是如何解析 JSON 的;最后,再和你分析如何提高 JSON 的解析性能。

什么是 JSON?

JSON ,是 JavaScript Object Notation 的缩写。其实,JSON 最初是被设计为 JavaScript 语言的一个子集,但最终因为和编程语言无关,所以成为了一种开放标准的常见数据格式。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何提高 JSON 解析性能,重点介绍了一款名为 simdjson 的快速 JSON 解析器。simdjson 能够以每秒千兆字节的速度解析 JSON 文件,远高于其他解析器。其主要思路是通过两个阶段的解析过程,尽可能以最高效的方式将 JSON 数据转换为计算机能更快理解的数据格式。在第一个阶段,simdjson 通过大规模的数据操作和位操作来处理输入的 JSON 内容;而在第二个阶段,采用了堆栈结构和聪明的条件移动操作,使得遍历过程变得高效。文章还提到了 simdjson 的使用方法,并鼓励读者通过查看论文和对应的代码实现来更详细地了解其解析思路。总的来说,simdjson 能够极大地提高 JSON 解析性能,对于需要对现有方案进行优化的开发者来说,这是一个非常值得尝试的开源解析库。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • bo
    NSJSONSerialization 在解析值是 null 的时候。并不会百分之百返回 NSNull,结果是随机的。有空数组,NSNull,还有值是 0 的 NSNumber。由于业务没有过滤 NSNumber 导致把它当作 NSDictionary 来处理出现了消息不响应的 crash。对于这类问题,老师是否有好的解决办法?

    作者回复: JSON 解析后的处理可以参看三方库的处理

    2019-05-09
    4
  • 梅长苏
    那mjextention解析效率如何?

    作者回复: 用的系统 NSJSONSerialization

    2019-05-09
    1
  • xilie
    在 Swift 原生提供 JSONDecoder 之后,相对于一些大名鼎鼎的第三方库,是否更推荐使用语言自带的 JSONDecoder 呢?

    作者回复: 三方也是用的 JSONDecoder

    2019-05-29
  • 大太阳
    我现在的项目就是纯swift的项目,现在绝大部分用的json解析都是swiftyjson,一小部分是kvc,前着使用时代码量多一些,后者基本不用怎么修改,想问下戴老师,swiftyjson的效率怎么样?还有希望戴老师可以指导下我们怎么测这个效率吗?市面上的这些比较出名的第三方解析库,的效率排名是怎么样的,kvc是在里面能排到第几呢?

    作者回复: swiftyjson 解析时使用的是系统 JSONSerialization 方法,本质上和系统解析 JSON 效率并无区别

    2019-05-17
  • 张蒙
    戴老师给我传达的思维方式。阶段一,能用就好。阶段二,能不能更好。显然,第二种更有利于自己的进步。
    2019-05-09
    10
  • TengFeng
    YYmodel 方便,效率还好
    2019-05-09
    1
    8
  • Jeffrey
    我把simdjson代码下载下来 写一个OC解析json的 demo , 但是效率没有 NSJSONSerialization 高 希望老师有空了帮忙看下 simdjson 是否做的比系统的NSJSONSerialization 更好 能否提高开发效率 https://github.com/BestiOSDev/MTSimdjson
    2019-06-21
    6
  • lvv
    swift 出了codable 以后其他库都不香了
    2020-05-01
    5
  • Geek
    什么时候会有1GB流量的JSON需要解析,对于大多数的接口来说,常用的0.2GB/s和2.2GB/s,效果是一样的
    2019-05-22
    4
  • Jeffrey
    我用的是Objective-C Foundation中自带的方法 NSJSONSerialization来解析json 本文中提到的simdjson 比iOS系统自带的json解析效率高吗?是不是以后可以用simdjson来替代 NSJsonSerialization
    2019-05-09
    3
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部