《JSONNeverDie 使用指南》示例
创建一个 Model:
class People: JSONNDModel { var name = '' }从字符串转换成 JSON 再自动映射为 Model:
let data = '{\'name\': \'JohnLui\'}'.dataUsingEncoding(NSUTF8StringEncoding) let json = JSONND.initWithData(data!) let people = People(JSONNDObject: json) print(people.name) // get 'JohnLui'功能自动映射[x] JSON 到 Model 自动映射
[x] 无需 init()
[x] 支持多层映射
.JSON 编码 / 解码[x] 支持所有数据类型: Int, Double, Bool, String, Array
[x] 会员体验良好:Xcode 会自动提示所有可选类型
[x] 同时支持普通类型(Int)和可选类型(Int?)
测试覆盖率接近 100%。
环境要求iOS 7.0+
Xcode 7
用法引入import JSONNeverDie基础用法let data = NSData(contentsOfURL: NSURL(string: '?hello=world')!)! let json = JSONND.initWithData(data) print(json['args']['hello'].stringValue)创建一个自动映射 Model// 从 NSData 初始化 let data = NSData(contentsOfURL: NSURL(string: '?hello=world')!)! let json = JSONND.initWithData(data) // 从 Array 初始化 let arrayJSON = JSONND(array: ['hello', 'world', 100]) // 从 Dictionary 初始化 let dictionaryJSON = JSONND(dictionary: ['hello': 'world', 'hey': 'guys'])获取值let value = json['key'].int let value = json['key'].intValue let value = json['key'].string let value = json['key'].stringValue let value = json['key'].double let value = json['key'].doubleValue let value = json['key'].bool let value = json['key'].boolValue let value = json['key'].array let value = json['key'].arrayValue // 多层直接获取 let value = json['key']['key1']['key2'].int处理 JSON 数组if let jsonArray = json['array'].array { for jsonItem in jsonArray { let value = jsonItem['key'].int } } // 或者可以做的更简单 let value = json['array'].arrayValue[0]['key'].intXcode 可以自动提示所有可选类型从 JSONND 对象得到 JSON 字符串let string = json.RAW自定义 mappingclass Good : JSONNDModel { var des = '' required init(JSONNDObject json: JSONND) { super.init(JSONNDObject: json) self.des = json['description'].stringValue } }自动映射文档继承自 JSONNDModel 的类的每一个成员变量都需要初始化。
class People: JSONNDModel { var name = '' var number = 0 var array = [Int]() }多层影射需要在上层的 init() 方法中初始化下层类:
class TestModel: JSONNDModel { var string = '' var double = 0.0 var int = 0 var array_values = [Int]() var array = [ModelOnlyOneKey]() var hey: Hey! required init(JSONNDObject json: JSONND) { super.init(JSONNDObject: json) for i in json['array_values'].arrayValue { self.array_values.append(i.intValue) } for i in json['array'].arrayValue { self.array.append(ModelOnlyOneKey(JSONNDObject: i)) } self.hey = Hey(JSONNDObject: json['hey']) } } class ModelOnlyOneKey: JSONNDModel { var key = 0 } class Hey: JSONNDModel { var man: Man! required init(JSONNDObject json: JSONND) { super.init(JSONNDObject: json) self.man = Man(JSONNDObject: json['man']) } } class Man: JSONNDModel { var hello = false }