🍁

Swift: CodableとJSON

に公開

JSONEncoderとJSONDecoderを使います。
JSONSerializationは使いません。

Object → JSON Data → JSON String

struct Content: Codable {
    var name: String
    var number: Int
}

let dict: [UUID: Content] = [
    UUID() : .init(name: "apple", number: 1),
    UUID() : .init(name: "banana", number: 2),
    UUID() : .init(name: "cherry", number: 3),
]

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]

let data = try encoder.encode(dict)

guard let jsonStr = String(data: data, encoding: .utf8) else { return }
print(jsonStr)

JSON Data → Object

let dict = try JSONDecoder().decode([UUID: Content].self, from: data)
print(dict)

Discussion