小编How*_*ard的帖子

`convertFromSnakeCase`策略不适用于Swift中的自定义`CodingKeys`

我尝试使用Swift 4.1的新功能在JSON解码期间将snake-case转换为camelCase.

这是一个例子:

struct StudentInfo: Decodable {
    internal let studentID: String
    internal let name: String
    internal let testScore: String

    private enum CodingKeys: String, CodingKey {
        case studentID = "student_id"
        case name
        case testScore
    }
}

let jsonString = """
{"student_id":"123","name":"Apple Bay Street","test_score":"94608"}
"""

do {
    let decoder = JSONDecoder()
    decoder.keyDecodingStrategy = .convertFromSnakeCase
    let decoded = try decoder.decode(StudentInfo.self, from: Data(jsonString.utf8))
    print(decoded)
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

我需要提供自定义,CodingKeys因为convertFromSnakeCase策略无法推断首字母缩略词或首字母缩写词(例如studentID)的大写字母,但我希望convertFromSnakeCase策略仍然适用testScore.但是,解码器抛出错误("没有与键CodingKeys相关的值"),似乎我不能同时使用convertFromSnakeCase策略和自定义 …

ios swift codable jsondecoder

11
推荐指数
1
解决办法
1838
查看次数

标签 统计

codable ×1

ios ×1

jsondecoder ×1

swift ×1