【问题标题】:How can I control Spring RequestBody converting JSON request body to object?如何控制 Spring RequestBody 将 JSON 请求正文转换为对象?
【发布时间】:2019-01-03 04:52:39
【问题描述】:

Spring @RequestBody 注解自动将 JSON 请求正文转换为 Object。转换过程对我们来说似乎是一个黑匣子。但是,我需要控制转换过程以使我预期的无效输入失败。

看看下面的代码。 JSON 请求正文包含一个带有大写字母的“id”字符串。当 Spring 自动将其转换为 UUID 对象时,就会成功。

// the controller
public class IndexController {
    ...
    public ResponseEntity<Void> postIndexes(@ApiParam(value = INDEXES_DESC, required = true) @Valid @RequestBody @Size(min = 1, max = 2000) List<Index> indexes) {
        ...
    }
    ...
}

// the Index class
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Index implements Serializable {
    @ApiModelProperty(value = ID_DESC, example = SINGLE_ID)
    @NotNull
    private UUID                id;
    ...
}

// the input JSON request body
[
    {
        ...
        "id": "40336c2b-591a-4472-a270-111111A46339",
        ...
    }
]

但是,我希望这种带有大写字母的输入失败。不确定 @RequestBody 注释有什么神奇的作用。看起来它使用 UUID.fromString() 将字符串输入转换为 UUID 对象。但我想对转换过程进行一些控制以使其失败。

【问题讨论】:

  • 您可以使用ObjectMapper进行转换
  • @MaruthiAdithya 问题是 ObjectMapper 超出了我的控制范围。它是 Spring 中黑匣子中的东西。能否举例说明一下如何在春季控制它?

标签: java spring annotations


【解决方案1】:

您也可以检查属性编辑器。

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 2023-02-23
    • 2020-10-10
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多