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)
如有疑问,请发布问题或创建拉取请求。欢迎拉取请求。谢谢。