Swift.Json 1.7.1

Swift.Json 1.7.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2018年4月
SPM支持 SPM

Anderson Lucas C. Ramos 维护。



  • Anderson Lucas C. Ramos

Build Status

Swift.Json

Swift 的 Json 自动解析。

示例

要使用 JsonParser 和 JsonWriter 类,只需声明您的 swift 类,其中所有属性均是 @objc dynamic,且类 MUST 继承自 NSObject。另外,对于可表示为 Obj-c 对象,可以是可选的,但对于不可表示为 Obj-c 的对象,MUST 被定义成非可选的。在 swift <=3.x 中,@objc dynamic 指令将强制您在 Swift 中定义它,但在 Swift 4.x 中仅需 @objc

写入示例

将对象转换为字符串的实现示例。

import Swift_Json // very important

class Employee: NSObject {
    @objc fileprivate(set) dynamic var name: String?
    @objc fileprivate(set) dynamic var age: Int = 0
}

class Boss: Employee {
    @objc fileprivate(set) dynamic var employees: [Employee]?
}

let employee1: Employee = Employee()
employee1.name = "John Apple Juice"
employee1.age = 35

let boss: Boss = Boss()
boss.name = "Steve James Apple Orange Juice"
boss.age = 65
boss.employees?.append(employee1)

let writer = JsonWriter()
let jsonString: String = writer.write(boss)
解析示例

字符串到对象转换实现示例。注意:使用上述相同的类。

let jsonString: String = // json string

let parser = JsonParser()
let boss: Boss = parser.parse(string: jsonString)

assert(boss.name == "Steve James Apple Orange Juice")
assert(boss.age == 65)
assert(boss.employees![0].name == "John Apple Juice")
assert(boss.employees![0].age == 35)
命名规范

通常,网页使用 snake_case 模式来命名属性,而 Swift 使用 camelCase 模式。可以通过传递一个包含关联功能 CasePatternConverter 的 JsonConfig 对象来完成 JsonWriter/JsonParser 的这一转换操作。Swift.Json 库为你提供了两个 CasePatternConverter 实现:CamelCaseConverter 和 SnakeCaseConverter。注意:使用上述相同的类。

class Programmer: Employee {
    @objc private(set) dynamic var coffeeLevel: Int = 0
}

let jsonString: String = // json string with snake_case naming convention (ex: "coffee_level")

let config = JsonConfig()
config.casePatternConverter = SnakeCaseConverter()

//Parsing: convert the json's "coffee_level" to programmers's "coffeeLevel".
let programmer: Programmer = JsonParser().parse(string: jsonString, withConfig:config)

//Writing: convert the programmers's "coffeeLevel" to json's "coffee_level"
let programmerJsonString: String = JsonWriter().write(anyObject: programmer, withConfig: config)

如有疑问,请发布问题或创建拉取请求。欢迎拉取请求。谢谢。