我想发送一个 JSON 请求正文,其中字段可以是枚举值。这些枚举值以驼峰命名,但枚举值为 UPPER_SNAKE_CASE。
Kotlin 类:
data class CreatePersonDto @JsonCreator constructor (
@JsonProperty("firstName") val firstName: String,
@JsonProperty("lastName") val lastName: String,
@JsonProperty("idType") val idType: IdType
)
Run Code Online (Sandbox Code Playgroud)
enum class IdType {
DRIVING_LICENCE,
ID_CARD,
PASSPORT;
}
Run Code Online (Sandbox Code Playgroud)
我的端点签名:
@PostMapping
fun createPerson(@RequestBody person: CreatePersonDto)
Run Code Online (Sandbox Code Playgroud)
HTTP请求:
curl -d '{ "firstName": "King", "lastName": "Leonidas", "idType": "drivingLicence" }' -H "Content-Type: application/json" -X POST http://localhost:8080/person
Run Code Online (Sandbox Code Playgroud)
我想隐式地将“drivingLicence”转换为 DRIVING_LICENCE。
org.springframework.core.convert.converter.Converter: 它适用于@RequestParam,但不适用于@RequestBodyorg.springframework.format.Formatter: 我注册了这个格式化程序,但是当我发出请求时,parse()方法没有执行。到目前为止我的配置:
@Configuration
class WebConfig : WebMvcConfigurer {
override fun addFormatters(registry: …Run Code Online (Sandbox Code Playgroud) 我有一个输入JSON,其中包含我确定里面的字段。但是,我需要灵活地添加几个额外的字段。我不知道其他字段的名称,但是我必须处理它。
我在考虑添加一个MaP字段,其中包含所有其他字段,但是输入未映射到该字段。
我想在Dropwizard端点中反序列化JSON。
有没有办法和杰克逊有关?
例:
JSON有效负载1:
{
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "01/01/1990",
"postcode": "1234"
}
Run Code Online (Sandbox Code Playgroud)
JSON有效负载2:
{
"first_name": "Alice",
"last_name": "Havee",
"phone_no": 012345678,
"passport_no": "AB 123456"
}
Run Code Online (Sandbox Code Playgroud)
稍后,JSON有效负载3甚至可以具有不同的字段。
Java DTO:
public class PersonDTO {
// mandatory field
private String firstName;
// mandatory field
private String lastName;
// Unknown optional fields?
// No args constructor
// Getters
// Setters
}
Run Code Online (Sandbox Code Playgroud)