Swift JSON Model最简单的方案

51 阅读1分钟

oc时代, 自动化JSON to Model大家都习惯了, 也有很多第三方框架,比如YYModel一类, 刚开始Swift在这方面挺麻烦的, 比如Codable再到后面的宏, 其实都没必要

现在Swift + AI则不需要这么费事了,这里给大家一个超级简单的方案

{
    "name": "你好",
    "recordTime": 1760976000000,
    "carbohydrate": "0.6",
    "calories": 70,
    "protein": 0.5
}

class Model {
let name: String
let recordTime: Int
let carbohydrate: String
let calories: Int
let protein: CGFloat
init(_ dict: [String: Any]){
    self.name = dict["name"] as? String ?? ""
    self.recordTime = dict["recordTime"] as? Int ?? 0
    self.carbohydrate = dict["carbohydrate"] as? String ?? ""
    self.calories = dict["calories"] as? Int ?? 0
    self.protein = dict["protein"] as? CGFloat ?? 0
}
}

// 根据文件模型, 将这个JSON生成model

这里只是演示, 大家可以使用其他ai工具仿写就行

image.png

生成的结果, 再进行微调就行 如果有生成JSON的需要,让AI增加方法就行

class JSONModel {
    let key1: String
    let key2: Int
    let key3: Double
    let key4: Bool
    let key5: String
    let key6: String
    let key7: Int
    let key8: [SubItem]
    
    init(_ dict: [String: Any]) {
        self.key1 = dict["key1"] as? String ?? ""
        self.key2 = dict["key2"] as? Int ?? 0
        self.key3 = dict["key3"] as? Double ?? 0.0
        self.key4 = dict["key4"] as? Bool ?? false
        self.key5 = dict["key5"] as? String ?? ""
        self.key6 = dict["key6"] as? String ?? ""
        self.key7 = dict["key7"] as? Int ?? 0
        self.key8 = (dict["key8"] as? [[String: Any]] ?? []).map { SubItem($0) }
    }
}

class SubItem {
    let subKey1: String
    let subKey2: Int
    
    init(_ dict: [String: Any]) {
        self.subKey1 = dict["subKey1"] as? String ?? ""
        self.subKey2 = dict["subKey2"] as? Int ?? 0
    }
}