在@RestController的@PathVariable上自定义@JsonDeserialize

问题描述 投票:1回答:2

@ PathVariable中是否可以使用和自定义反序列化器?

public class MyClass {

    @JsonSerialize(using = CustomSerializer.class)
    @JsonDeserialize(using = CustomDeserializer.class)
    private String id;

}

在我的RestController中,我有一个带有1 @PathVariable的api,我想使用自定义解串器。现在,当我调用此api时,Id会自动进入MyClass,而无需使用自定义反序列化器。

@GetMapping("/try/{id}")
public void idk(@PathVariable(name = "id") MyClass myClass) {
        System.out.println(myClass);
}

如果我使用@RequestBody工作。

如何触发@JsonDeserialize(使用= CustomDeserializer.class)

java spring jackson json-deserialization spring-restcontroller
2个回答
0
投票

您可以使用下面的代码

@ControllerAdvice
public class GlobalControllerAdvice {

   @ModelAttribute("id")
   public MyClass getId(@PathVariable String id) {
      MyClass result = // map value to object
      return result;
   }
}

0
投票

我认为您不能使其自动触发,您应该创建一个映射来映射您的对象或使用以下解决方案!否则,您可以在控制器函数中调用构造函数。这取决于您以后要做什么。

© www.soinside.com 2019 - 2024. All rights reserved.