Spring Boot Sping Boot ,在序列化之前输出json http请求主体

nkkqxpd9  于 2022-11-05  发布在  Spring
关注(0)|答案(3)|浏览(155)

Sping Boot 在接收到http请求时将执行以下步骤。
1.首先读取json http请求正文
2.然后将其反序列化为@RequestBody对象。

// Json Data Mapper
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(request)

我可以使用ObjectMapper输出json主体,但是如果我可以在将json主体反序列化为对象之前直接输出json主体,效果会更好。
在spring Boot 将json请求体反序列化为object之前,是否可以输出它?

mm5n2pyu

mm5n2pyu1#

而不是使用以下内容:

@RequestMapping("/...")
public Bar findBar(@RequestBody Foo foo) {
    // ...
}

您可以执行以下操作:

@RequestMapping("/...")
public Bar findBar(Reader reader) {
    String json = reader.read..( );
    Foo foo = objectMapper.read( ... );
}

但是我不认为有一种方法可以同时得到反序列化的对象和原始的响应。

c3frrgcw

c3frrgcw2#

如果要将JSON作为字符串对象、

@RequestMapping("/...")
public Bar findBar(@RequestBody("json") String json) {
    // ...
}

上面的代码片段将给予你一个JSON字符串作为输出。现在,如果你想把它转换成对象,你可以使用

ObjectMapper mapper = new ObjectMapper();
58wvjzkj

58wvjzkj3#

@RequestMapping(value = "/...", method = RequestMethod.POST)
public Bar getBar(@Valid @RequestBody String jsonBody){
    System.out.println("data:" + jsonBody);
}

public class BarRequestEntity{

    // AuthenticationKey
    @NotBlank(message = "id {error.empty}")
    private String id;
}

我使用@Valid来检查请求参数。

相关问题