【发布时间】:2021-09-27 13:15:03
【问题描述】:
如何将 nil 属性编码为空 JSON 对象?
struct Foo: Encodable {
let id = 10
let bar: Bar? = nil
}
struct Bar: Encodable {
let number: Int
}
let data = try! JSONEncoder().encode(Foo())
print(String(data: data, encoding: .utf8)!)
打印出来:
"{"id":7}"
我想要的是:
"{"id":7, "bar":{}}"
【问题讨论】:
-
这基本上会破坏编码和解码之间的对称性,想知道需要这种编码的用例是什么。
-
let bar: Bar? = nil这是毫无意义的。 bar 永远是nil -
用 NSNull 编码不是更好吗?
-
@LeoDabus 这段代码只是为了展示我的问题。
-
@Cristik 我正在使用的 API 要求我这样做。我同意这不是传统的,但我别无选择。而且我只是对其进行编码,从不从 JSON 中解码。
标签: json swift codable foundation encodable