之前OC我是用的JSONModel,字典转model就一句代码,很方便,不知道swift有没有同样方便的三方。希望知道的同学可以分享一下,最好贴上实例代码。
之前OC我是用的JSONModel,字典转model就一句代码,很方便,不知道swift有没有同样方便的三方。希望知道的同学可以分享一下,最好贴上实例代码。
JSONModel在Swift中可以用的. 在class CustomModel: JSONModel
中command + 左键单击 查看JSONModel的API
自定义模型:
import Foundation
import JSONModel
class CustomModel: JSONModel {
var str: String?
}
赋值打印:
let model = try? CustomModel.init(dictionary: ["str":"hahha"])
print(model?.str ?? "nil")
推荐: SwiftyJSON, github链接
如何使用:
初始化:
let json = JSON(data: dataFromNetworking)
//这里的object是AnyObject,但是必须是能转会成JSON的数据类型。传错也没关系,最多你后面再也取不到数据了。
let json = JSON(jsonObject)
Subscript “下标?”:
从一个假定对应的是数组里面取double
let name = json[0].double
从一个假定对应的是字典里面取stringValue,注意多了一个Value
let name = json["name"].stringValue
好玩的来了,从一个数组(好似一个路径中)取string
let name = json[1,"list",2,"name"].string
//上面下面实际上是一样的
let name = json[1]["like"][2]["name"].string
let path = [1,"list",2,"name"]
let name = json[path].string
循环
循环字典:第一个参数是一个key, 第二个参数是JSON
//If json is .Dictionary
for (key: String, subJson: JSON) in json {
//Do something you want
}
循环数组,注意循环数组也只能用元组,第一个参数是一个string的index, 第二个参数是JSON
//If json is .Array
//The `index` is 0..<json.count's string value
for (index: String, subJson: JSON) in json {
//Do something you want
}
我用的是Mantle 挺方便的,推荐给你,swift一样能用:
https://github.com/Mantle/Mantle
class TestModel:MTLModel, MTLJSONSerializing {
var a:Int = 0
var jsonb:String = 0
var subModel:TestSubModel?
override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any]!
{
//如果定义的属性跟json字段不匹配的话,可以在这里设置匹配
return ["a": "jsona"]
}
//包含子类对象的映射
class func subModelJSONTransformer() -> ValueTransformer {
return ValueTransformer.mtl_JSONDictionaryTransformer(withModelClass: TestSubModel.self)
}
}
2 回答1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答1.1k 阅读
HandyJSON
阿里巴巴开源项目,出身名门,比其他的三方便捷,如果使用ObjectMapper,
SwiftyJSON等你肯定受够了那种手动映射!!!!!
所以它最适合用惯了OC中json转model的便捷方式的coder
swift3中json转model确实不方便,这也是网络层最痛苦的事情,不过现阶段找第三方的话找个自己方便使用的就可以了,因为不用等太久,swift4就会到来,swift4对json三方将是一次冲击,官方提供了方便的json转model库,到时候就可以舍弃三方了(也许会有基于官方的上层封装,但是不是太必要)。所以找个自己用着好用的先做项目吧!
HandyJSON和swift4的官方用法很相似!!!