使用snake_case转换的 JSON 编码会忽略编码密钥



我有以下结构发送到端点:

struct IdleAlarmRequest: Encodable {
    let idleAlarm: [IdleAlarmParameters]
    enum CodingKeys: String, CodingKey {
        case idleAlarm = "IdleAlarm"
    }
}

无论我做什么idleAlarm都将始终以idle_alarm的形式写入生成的 JSON 字符串中。这应该IdleAlarm,因为"对象"是使用此 API 进行的 PascalCased,只应snake_cased字段。 Decodable工作正常。

所有对象中的所有其他字段都是snake_cased所以如果我不使用snake_case我需要为数百个字段添加 CodingKeys。

您的问题中没有代码,所以我无法完全理解您在做什么,请考虑对其进行编辑以添加更多详细信息。

但我想你是这样编码结构的:

let request = IdleAlarmRequest(...)
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
do {
    let data = try encoder.encode(request)
}
catch {
}

convertToSnakeCase策略将您的编码密钥从驼峰大小写转换为蛇形大小写。

如果您不希望此行为,可以删除该行。

编辑:您可以创建自定义密钥编码策略。

encoder.keyEncodingStrategy = .custom { key -> CodingKey in
    // Your own code...
}

相关内容

  • 没有找到相关文章

最新更新