我正在解码来自API的响应,当我有期望的数据时,它就可以工作.
但是服务器通常会以{}
或{}\n
来响应,这是一个空对象.这是意料之中的.
在try 解码预期数据之前,我希望捕捉这些响应.
我采用了下面的方案,但我觉得应该有一种更有原则的方法来解码空json对象.
let empty1 = "{}".data(using: .utf8)!
let empty2 = "{}\n".data(using: .utf8)!
let (data, response) = try await URLSession.shared.data(for: request)
if data == empty1 || data == empty2 {
print("empty json response")
return nil
}
// what I would like to do
let decoded = try JSONDecoder().decode(xxxx, from: data) // what to decode here
// how to test for emptyness
我还可以比较数据的String表示,但这与我当前的方案是一样的.