Spring启动,在序列化之前输出json http requestbody

时间:2015-10-22 09:06:04

标签: json spring spring-boot httprequest

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请求体,将其反序列化为对象?

3 个答案:

答案 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();