gpt4 book ai didi

ios - 当数组中的一项抛出 DecodingError 时,Swift 4 解码数组的其余部分

转载 作者:行者123 更新时间:2023-11-28 08:00:00 24 4
gpt4 key购买 nike

<分区>

如果其中一个对象抛出 DecodingError,是否可以返回数组中成功解码的对象?我正在与一个相当复杂的 API 通信,它间歇性地向我发送一些格式错误的 JSON,这会导致抛出 DecodingError 并且整个对象数组(包括有效条目)未被解析。

我不知道是否有某种方法可以手动完成,但是给定一个包含一些 duff 数据的 JSON 数组,我仍然想以某种方式获得可以成功解码的对象。

编辑:根据要求,代码示例:

let json = """
[
{"prop1": 1, "prop2": 2, "prop3": 3},
{"prop1": 1, "prop2": 2, "prop3": 3},
{"prop1": 1, "prop2": 2}
]
""".data(using: .utf8, allowLossyConversion: false)!

struct MyStruct: Codable {

let prop1: Int
let prop2: Int
let prop3: Int
}

// Throws keyNotFound (uncaught obviously) and returns nil because prop3 in 3rd object is missing
let decoded = try? JSONDecoder().decode(MyStruct.self, from: json)

显然是一个人为的例子,但希望能说明我的观点。如果响应数组中的对象缺少强制属性,那么我希望将该对象从解码对象列表中删除,而不是轰炸掉并返回任何内容。

这也适用于所有其他解码错误(dataCorrupted、typeMismatch、valueNotFound)。

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