Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring启动,在序列化之前输出json http requestbody_Json_Spring_Spring Boot_Httprequest - Fatal编程技术网

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

Spring启动,在序列化之前输出json http requestbody,json,spring,spring-boot,httprequest,Json,Spring,Spring Boot,Httprequest,当收到http请求时,Spring boot将执行以下步骤 1.首先读取json http requestbody 2.然后将其反序列化为@RequestBody对象 //Json数据映射器 ObjectMapper mapper=新的ObjectMapper() mapper.writeValueAsString(请求) 我可以使用ObjectMapper输出json正文,但如果我可以在json正文反序列化为object之前直接输出json正文,那么效果会更好 在spring boot将jso

当收到http请求时,Spring boot将执行以下步骤

1.首先读取json http requestbody

2.然后将其反序列化为@RequestBody对象

//Json数据映射器

ObjectMapper mapper=新的ObjectMapper()

mapper.writeValueAsString(请求)

我可以使用ObjectMapper输出json正文,但如果我可以在json正文反序列化为object之前直接输出json正文,那么效果会更好

在spring boot将json请求正文反序列化为object之前,是否可以输出json请求正文?

而不是使用以下方法:

@RequestMapping("/...")
public Bar findBar(@RequestBody Foo foo) {
    // ...
}
您可以这样做:

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

但我认为没有办法同时获得反序列化对象和原始响应。但是我可能错了。

如果您想将JSON作为字符串对象

@RequestMapping("/...")
public Bar findBar(@RequestBody("json") String json) {
    // ...
}
上面的代码片段将为您提供JSON字符串作为输出。现在,如果您想将其转换为对象,则可以使用

ObjectMapper mapper = new ObjectMapper();

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

非常感谢。但是我想在日志中输出原始请求主体,并使用@RequestBody。有可能吗?@Yuu正如我提到的,我不认为有办法两者兼得。要么获取对象然后序列化,要么获取原始请求并反序列化。@Yuu不客气。如果您觉得答案解决了您的问题,您可以使用旁边的勾号接受答案。非常感谢,我可以输出原始请求输出。但是如果我使用您重新命名的方式,@Valid注释似乎不起作用。我已经添加了一些代码。谢谢您的确认。这不再有效,因为Spring说
找不到符号值
您使用的是错误的@valid方法。您需要使用@@validc定义用户定义的对象您可以给我一个示例,我应该将@valid放在哪里?如果您希望输出为JSON数据,则需要使用objectmapper或GSON库。是的,我可以按照您的方法输出JSON,但我现在不能使用@valid…您必须提到有效的注释和RequestBody Foo Foo,之后,您需要使用objectmapper或GSON库手动将foo对象转换为json。
@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;
}