Avatar
enum JSONNullable<T> : Codable { case value(T) case null func encode(to encoder: Encoder) throws { var sc = encoder.singleValueContainer() switch self { case .value(let anyValue): if let encodableValue = anyValue as? Encodable { // sc.encode(encodableValue) // だめ } else { // throw error } case .null: try sc.encodeNil() } } }
6:12 AM
JSONに noneのときに キーが無くなるのではなくて null を吐く Optionalを作ろうとしてるんですが
6:13 AM
↑ // だめ のところってどうやって書いたらいいんでしょう?
6:13 AM
I'm using Swift 4's JSONEncoder. I have a Codable struct with an optional property, and I'd like this property to show up as null value in the produced JSON data when the value is nil. However,
6:13 AM
case .some(let wrapped): try (wrapped as! Encodable).__encode(to: &container) SOでヤバそうなコードは見つけたんですけど。
6:14 AM
enum JSONNullable<T> : Codable { case value(T) case null func encode(to encoder: Encoder) throws { switch self { case .value(let anyValue): if let encodableValue = anyValue as? Encodable { // sc.encode(encodableValue) // だめ try encodableValue.encode(to: encoder) // } else { // throw error } case .null: var sc = encoder.singleValueContainer() try sc.encodeNil() } } }
6:14 AM
↑これで良いのか・・?