使用 keyDecodingStrategy 从蛇案例转换为驼案例

Converting from snake case to camel case using keyDecodingStrategy

我正在尝试使用 Codable 自动将传入的 JSON 解析到我的模型中。它工作正常,但后来我了解了 _keyDecodingStrategy_,并想使用它。它工作得很好并且能够减少我的代码,因为我不必为我的模型编写 CodingKeys 枚举。

但现在的问题是服务器发送了一个新变量。变量是post_url_110x110

我以为它会转换为 postUrl110x110,但事实并非如此。请帮助我进行 camelCase 转换,或者建议我在这种情况下是否应该避免自动转换。

你可以试试这个 tool

示例输入

输出

  • 如果您需要进一步的帮助,请告诉我。

如果您将数据模型 属性 从 postUrl110x110 重命名为 postUrl110X110 并使用大写字母 X,它将对您有用。我知道这不是理想的解决方案,但值得注意。检查下面的例子:

struct DataItem: Codable {
    var itemId: String
    var postUrl110X110: String
}

let json = """
{
    "item_id": "abcd",
    "post_url_110x110": "https://example.org/image.png"
}
""".data(using: .utf8)!

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase

print(try! decoder.decode(DataItem.self, from: json))