zoukankan      html  css  js  c++  java
  • 源码阅读-SwiftyJSON

    最后更新:2018-03-19

    一、说在前面的话:

    SwiftyJSON 作为一个 swift 的解析库, 在 Swift4 之前备受欢迎, 目前(2018.3.19) 已经有 1.6w+ Star 以及 2800+ fork.

    Swift4中, Apple 实现了 Codable 协议,使得JSON 转模型变得高效, SwiftJSON等一系列三方库会逐渐变为历史。 但一份优秀的代码包含着设计者的思想,非常值得我们去学习。

    二、开始阅读源码

    SwiftJSON文件并不多, 总共也就一千多行的代码. 但是其中的内容迭代,从2014.9.29日维护至今, 对内容各种优化调整。

    JSON的数据类型

    JSON官方定义的数据格式有: 字典(Dict)、数组(Array)、字符串(String)、数字(Number)、布尔值(true & false)、以及 null, 其中JSON是以数组或者字典开头的,其中字典的key为字符串(String)

    例如:

    {
        "name": "BeJson",
        "url": "http://www.bejson.com",
        "page": 88,
        "nullValue": null,
        "isNonProfit": true,
        "address": {
            "street": "科技园路.",
            "city": "江苏苏州",
            "country": "中国"
        }
    }
    

    处理JSON数据,每个人都有自己的方法。在曾经开发过程中, 遇到过下面的集中问题:

    1. 布尔值问题. 例如表示一个人是否成年。 经常采用的是利用 0 和1 表示 true & false;
    2. value解析的问题, 尤其是 null 值解析;
      针对第一个问题,各有各的道理, 布尔值(true&false)意思表达的很明确, 没有第三种情况。 而整形就可以由你随便使用(有时候就成了"滥用").

    null值解析, null值应该根据实际需要解析成不同的类型。 字符串可以解析成 "null" 或者 “”, 这里应该提供对应的方式有使用者去处理。很遗憾的是, 作者在处理这一块的时候, 就处理为 “null”

    SwiftyJSONError

    SwiftJSONError 可以看到, 以前一直是使用常量来表示, 在 2017.5 的时候, 源代码作者将其设置为遵循 Swift.Error的类型, 考虑到NSError, 遵循 CustomNSError 协议并实现响应的代码.

  • 相关阅读:
    php socket 客户端代码
    linux crontab定时执行
    加载 pcntl 多进程
    Xdebug 配置
    Zend Debugger 配置
    windows SVN搭建
    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
    操作系统-分段机制
    C++中的new、operator new与placement new
    线程安全的概念
  • 原文地址:https://www.cnblogs.com/gaox97329498/p/12070273.html
Copyright © 2011-2022 走看看