Spring Boot会在收到http请求时执行以下步骤。
1.阅读json http requestbody First
2.然后将其反序列化为@RequestBody对象。
// Json Data Mapper
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(请求)
我可以通过使用ObjectMapper输出json主体,但如果我可以在将json主体反序列化为对象之前直接输出json主体,它会更有效。
是否可以在spring引导之前输出json请求体,将其反序列化为对象?
答案 0 :(得分:0)
而不是使用它:
@RequestMapping("/...")
public Bar findBar(@RequestBody Foo foo) {
// ...
}
你可以这样做:
@RequestMapping("/...")
public Bar findBar(Reader reader) {
String json = reader.read..( );
Foo foo = objectMapper.read( ... );
}
但我认为没有办法让反序列化对象和原始响应。我可能错了。
答案 1 :(得分:0)
@RequestMapping(value = "/...", method = RequestMethod.POST)
public Bar getBar(@Valid @RequestBody String jsonBody){
System.out.println("data:" + jsonBody);
}
公共类BarRequestEntity {
// AuthenticationKey
@NotBlank(message = "id {error.empty}")
private String id;
}
我使用@valid检查请求参数。 @nrvmodi
答案 2 :(得分:-1)
如果您想将JSON作为字符串对象,
@RequestMapping("/...")
public Bar findBar(@RequestBody("json") String json) {
// ...
}
上面的代码段将为您提供JSON字符串作为输出。现在,如果您想将其转换为对象,则可以手动使用
ObjectMapper mapper = new ObjectMapper();