在 Swift 中使用 JSONDecoder 解析 JSON 时将空值转换为默认字符串

zzt*_*top 0 ios swift jsondecoder

我正在尝试使用 JSONDecoder 在 Swift 中解析一些 JSON,其中 JSON 偶尔会有空值。我想改为设置默认值。以下允许我处理它,但空值稍后会导致问题。

struct Book: Codable {
        let title : String
        let author: String?
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法做类似的事情(以下不编译),也许使用初始化程序?:

struct Book: Codable {
        let title : String
        let author: String ?? "unknown"
    }
Run Code Online (Sandbox Code Playgroud)

感谢您的任何建议

小智 5

这可以通过如所描述的手动的解码是地址在这里

另一种方法是让存储的属性准确地反映数据,然后在提供非可选值的情况下计算出 var。

struct Book: Codable {
    let title : String
    let author: String?

    var displayAuthor: String {
        return author ?? "unknown"
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能很有吸引力的另一个原因是,如果您将来需要检查该值是否存在,它会保留可选值。