JSONX 1.1.0

JSONX 1.1.0

测试已测试
Lang语言 SwiftSwift
许可证 Apache 2
发布上次发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Mohsan Khan 维护。



JSONX 1.1.0

  • 作者:
  • Mohsan Khan

JSONX Logo

解析JSON数据,简单、轻量且无噪音

享受这个playground,它还包含一些测试和一个示例json文件。

示例用法

// init with String, specifying single or double quotes
JSONX(with:"{'name':'Khan Solo'}", usesSingleQuotes:true)

// init with file path
JSONX(with:path)

// init with file URL
JSONX(with:url)

// init with Data
JSONX(with:data)

// init with Dictionary<String, Any>
JSONX(with:["name":"Khan-Solo", "level":50, "skills":[1,2,3], "droids":["shiny":9]])

访问器类型

支持的数据类型:Bool, UInt,/Int, Float/Double, String, 数组,字典,原始未转换格式

所有访问器函数都可以定义一个默认值

// without default value
jsonx.asString("thisKeyDoesNotExist") // returns nil

// with default value
jsonx.asString("thisKeyDoesNotExist", default:"Default string") // returns "Default string"

使用键路径搜索

{
    "parent": {
        "child": {
            "puppy": {
                "name": "voffy"
            }
        }
    }
}
jsonx.asString(inKeyPath:"parent.child.puppy.name") // returns "voffy"

简单的JSON -> Swift Struct模型映射

{
    "Person": {
        "name": "Khan Solo",
        "age": 99
    }
}
struct PersonModel
{
    var name:String?
    var age:Int?

    static func `init`(jsonx:JSONX)
    -> PersonModel
    {
        var pm:PersonModel = PersonModel()

        pm.name = jsonx.asString("name", default:"Johnny Appleseed")
        pm.age = jsonx.asInt("age", default:0)

        return pm
    }
}

PersonModel.init(jsonx:myJSONXObject)

定制您的Swifty需求!

只需输入.as即可查看带有前缀函数名的函数查找 :-) asLookup

性能

提供的 XCTest 测量了在层次结构中查找键时的性能。通常您只会做一次,并缓存值,但可以看出 JSONX 与其他替代方案的比较。实际上,JSONX 非常有速度,您可以在实时中使用它而不用担心性能问题!

测试在 MacBook Pro (Retina, 15-inch, Late 2013)、16 GB 1600 MHz DDR3、macOS 10.11.6 (15G1217) 上运行

    jsonx.asString(inKeyPath:"key1.key2.key3.key4.key5")

    jayson["key1"]["key2"]["key3"]["key4"]["key5"].string

swiftyjson["key1"]["key2"]["key3"]["key4"]["key5"].string

测试对每次调用进行了 10000 次测量,结果越低越好且越快。

JSONX 1.1 JAYSON 0.6.2 SwiftyJSON 3.1.4
平均时间秒 0.078 0.163 1.097
完成时间秒 1.035 1.884 11.659

平均时间上 JSONX 比 JAYSON 快 2.08 倍,比 SwiftyJSON 快 14.06 倍。

完成时间上 JSONX 比 JAYSON 快 1.82 倍,比 SwiftyJSON 快 11.26 倍。

asLookup

更新内容?

  • 版本 1.1 优化了性能以及一些小的重构。

要求

  • Swift 版本 3.0.1
  • ARC
  • macOS 10.11 及以上
  • iOS 9.0 及以上
  • tvOS 9.0 及以上

如何安装

没有框架/库的发行版,我建议您将 JSONX/Sources 添加到您的项目中。这样可以让您轻松找到并阅读 JSONX API,同时也会使得 JSONX 可以使用您应用的构建设置进行编译。

  • Git: 运行 git clone https://github.com/MKGitHub/JSONX.git 然后 将 JSONX/Sources 拖放到您的 Xcode 项目中。
  • 手动: 将 JSONX/Sources 拖放到您的 Xcode 项目中。
  • Carthage: 在您的 Cartfile 中添加 github "MKGitHub/JSONX" ~> 1.1.0 然后 carthage update --no-build 然后 将 JSONX/Sources 拖放到您的 Xcode 项目中。
  • Swift Package Manager (仍然很无意义): 运行 swift buildswift package generate-xcodeproj
  • CocoaPods (不建议!): pod 'JSONX', '~> 1.1.0'

文档

前往文档 首页.

在应用程序中使用

以下的应用/游戏在生产中使用 JSONX(据我所知),这些应用每天共同被数百万用户使用。如果您使用 JSONX,请告知我。

麦当劳瑞典

备注

https://github.com/MKGitHub/JSONX

http://www.xybernic.com

http://www.khanofsweden.com

版权所有 2016 Mohsan Khan

根据 Apache 许可协议,版本 2.0。