我想发送一个 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) 是否有注释或其他方式告诉Jackson序列化String变量的值而不带引号.序列化程序应仅序列化一个字段的值而不带引号.
我正在寻找类似于以下内容的回报:
{"name": "nameValue", "click" : function (e){console.log("message");}}
Run Code Online (Sandbox Code Playgroud)
代替
{"name": "nameValue", "click" : "function (e){console.log("message");}"}
Run Code Online (Sandbox Code Playgroud)
以上是外部java脚本库如何需要数据,因此如果没有办法,我必须在Object Mapper将其转换为JSON后手动更改字符串.
我正在尝试使用 Jackson 将 JSON 反序列化为 Java POJO。Json 看起来像
"foo": {
"one": {
"a":1,
"b":"string"
}
"three":{
"a":2
"b":"another"
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想反序列化的类有这个字段:
public class Myclass {
private Map<MyEnum, MyPojo> foo;
//setter and getter
public static MyPojo {
private int a;
private String b;
}
}
Run Code Online (Sandbox Code Playgroud)
我的枚举类型如下所示:
public enum MyEnum {
one("data1"),two("data2")
@JsonValue
String data;
EnumAttrib(String data) {
this.data = data;
}
private static Map<String, MyEnum> ENUM_MAP = new HashMap();
static {
for (MyEnum a: MyEnum.values()) {
ENUM_MAP.put(a.data, a);
}
} …Run Code Online (Sandbox Code Playgroud)