我有以下结构发送到端点:
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...
}