最佳答案
                                        
                                                                        
                                我用的是 Swift 4的 JSONEncoder。我有一个带有可选属性的 Codable结构,我希望这个属性在生成的 JSON 数据中以 null值的形式显示,当值为 nil时。但是,JSONEncoder放弃了该属性,并且没有将其添加到 JSON 输出中。在这种情况下,有没有配置 JSONEncoder的方法来保留密钥并将其设置为 null?
下面的代码片段生成 {"number":1},但我更希望它给我 {"string":null,"number":1}:
struct Foo: Codable {
var string: String? = nil
var number: Int = 1
}
let encoder = JSONEncoder()
let data = try! encoder.encode(Foo())
print(String(data: data, encoding: .utf8)!)