测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布上次发布 | 2017年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 Mohsan Khan 维护。
解析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"
{
"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)
提供的 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 倍。
没有框架/库的发行版,我建议您将 JSONX/Sources 添加到您的项目中。这样可以让您轻松找到并阅读 JSONX API,同时也会使得 JSONX 可以使用您应用的构建设置进行编译。
git clone https://github.com/MKGitHub/JSONX.git
然后 将 JSONX/Sources 拖放到您的 Xcode 项目中。
将 JSONX/Sources 拖放到您的 Xcode 项目中。
github "MKGitHub/JSONX" ~> 1.1.0
然后 carthage update --no-build
然后 将 JSONX/Sources 拖放到您的 Xcode 项目中。
swift build
或 swift package generate-xcodeproj
pod 'JSONX', '~> 1.1.0'
前往文档 首页.
以下的应用/游戏在生产中使用 JSONX(据我所知),这些应用每天共同被数百万用户使用。如果您使用 JSONX,请告知我。
https://github.com/MKGitHub/JSONX
版权所有 2016 Mohsan Khan
根据 Apache 许可协议,版本 2.0。