gpt4 book ai didi

swift - 为什么在使用 JSONDecoder.decode 方法时没有调用 Decodable 的 init 方法?

转载 作者:行者123 更新时间:2023-11-28 05:41:38 27 4
gpt4 key购买 nike

我试图覆盖 JSONDecoder 解码数据的方式。

我尝试了以下方法:

struct Response : Decodable {
init(from decoder: Decoder) throws {
print("Hello")
}
}

let result = try JSONDecoder().decode(Response.self, from: Data())

但是 init(from:) 没有被调用。基本上我希望 JSONDecoder 在将空数据解码为空 Response 对象时始终成功

最佳答案

空的 Data 对象导致 init 方法抛出错误

The given data was not valid JSON.

在打印“Hello”之前。


如果你想得到一个空的Response对象(假设你不必调用任何指定的初始化器)捕获dataCorrupted解码错误

struct Response : Decodable {}

var response : Response?
do {
response = try JSONDecoder().decode(Response.self, from: Data())
} catch DecodingError.dataCorrupted(let context) where (context.underlyingError as NSError?)?.code == 3840 { // "The given data was not valid JSON."
response = Response()
} catch { print(error) }

关于swift - 为什么在使用 JSONDecoder.decode 方法时没有调用 Decodable 的 init 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com