使用Spring MVC按字段将传入的JSON分解为对象



我需要分解我的传入JSON字段在我的REST控制器与Spring Boot。

我的请求正文:

{
  "text": "my text",
  "myEnum": "VALUE1"
}

我的控制器:

@PatchMapping("/{id}")
Object updateEntity(@PathVariable Long id, String text, MyEnum myEnum) {
    /* ... */
}

@RequestParam不工作,因为它只是查询字符串参数,@RequestBody也不工作,因为它处理整个身体。但我需要分解传入体的领域和注入到控制器。我知道我可以为此使用Map <String, String>,但我想验证我的传入字段,并且我有不同类型的字段。我不想为每个控制器创建一个传入主体的类

如果我没有误解您的要求,处理传入JSON的通常方法是定义一个反映预期输入的类,并将控制器方法参数注释为RequestBody。

Spring Boot默认使用Jackson来反序列化到你的类,所以如果你使用匹配的属性名,那么你不需要任何特殊的注释或设置。我认为默认情况下会处理枚举,就像其他类型一样(尽管您可能需要为表示日期或时间戳的字符串提供一些指导)。任何坏值都将导致反序列化失败,我认为您可以在ControllerAdvice中处理(尽管您需要仔细检查)

相关内容

  • 没有找到相关文章

最新更新