最佳答案
我用的是 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)!)