import SwiftUI
class Oxydol : Codable {
var name: String
var kind: String
var formula: String
var images: [String]
enum CodingKeys: String, CodingKey {
case name, kind, formula, images
}
init() {
self.name = "oxydol"
self.kind = "物質"
self.formula = "H2O2"
self.images = ["oxydol"]
}
required convenience init(from decoder: Decoder) throws {
self.init()
let values = try decoder.container(keyedBy: CodingKeys.self)
self.name = try values.decode(String.self, forKey: .name)
self.kind = try values.decode(String.self, forKey: .kind)
self.formula = try values.decode(String.self, forKey: .formula)
self.images = try values.decode([String].self, forKey: .images)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(name, forKey: .name)
try container.encode(kind, forKey: .kind)
try container.encode(formula, forKey: .formula)
try container.encode(images, forKey: .images)
}
}
let encoder = JSONEncoder()
let value = Oxydol()
if let data = try? encoder.encode(value),
let str = String(data:data, encoding:.utf8) {
print(str)
}
print("------")
let data = "{\"kind\":\"物質2\",\"name\":\"oxydol2\",\"images\":[\"oxydol\",\"oxydol2\"],\"formula\":\"H2O2\"}".data(using:.utf8)!
let decoder = JSONDecoder()
if let dvalue = try? decoder.decode(Oxydol.self, from:data) {
print("name= \(dvalue.name)")
print("kind= \(dvalue.kind)")
print("formula= \(dvalue.formula)")
print("images[1]= \(dvalue.images[1])")
}