当前位置: 首页 > 知识库问答 >
问题:

Spring boot-json post请求主体作为POJO和字符串

娄鹤轩
2023-03-14

在Spring Boot控制器方法中,我可以将json post请求主体映射到POJO,例如。

@PostMapping(value = "/abc")
public String handleABC(
        @RequestBody User user
) {
    //code here...
}

我还可以将原始请求正文作为字符串检索:

@PostMapping(value = "/abc")
public String handleABC(
        @RequestBody String request
) {
    //code here...
}

我的问题是如何将请求体映射到POJO,并将原始请求体作为字符串检索(用于日志目的)。

谢谢

共有2个答案

龚博涛
2023-03-14

这应该管用

@PostMapping(value = "/abc")
public String handleABC(
        @RequestBody String request
) {
    User user = objectMapper.readValue(request,User.class);       
    logger.log(request);
    //code here...
}
闻人仲渊
2023-03-14

通常,SpringBoot默认情况下将使用Jackson作为序列化框架。

如果没有效果,您可以检查您的配置,并继承WebMvcConfigrerAdapter重写configureMessageConverters序列化方法和特定行为。

这样地:

我使用FastJson作为序列化框架,你可以在这里设置Jackson的配置,而不是像我那样

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {

    /**
     * custom MessageConverter
     * @param converters
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter4 converter = new FastJsonHttpMessageConverter4();
        FastJsonConfig config = new FastJsonConfig();
        converter.setFastJsonConfig(config);
        converter.setDefaultCharset(Charset.forName("UTF-8"));
        converters.add(converter);
    }
}

 类似资料:
  • 我正在使用Spring实现一个RESTful web服务。其中一个endpoint接收JSON字符串作为请求体,我希望将其映射到POJO。然而,现在看来传入的JSON字符串并没有映射到POJO的属性。 这里是@RestController界面 数据模型 最后是我的发帖请求: 与内容类型指定为应用程序/json 但是,当我打印出对象值时,打印出的是默认值(“first”和“last”),而不是我传入

  • 问题内容: 所以我在与node.js一起运行的server.js文件中有以下代码。我正在使用express处理HTTP请求。 我在终端中运行以下命令: 运行该server.js后,将输出以下内容。 所以req.body是。我阅读了其他有关类似问题的Stack Overflow帖子,其中由于正文解析器,内容类型不正确。但这不是问题,因为内容类型是application / json。 有什么想法如何

  • 我试图为PUT api创建一个单元测试,如下所示,使用一个String[]作为请求体。 我的测试如下所示 测试失败,但有以下例外: 从mockmvc传递字符串数组参数的最佳方法是什么?

  • 我需要将一个json字符串作为值传递给POST请求正文的一个参数。我的请求正文如下所示: 对于参数3,我需要以json格式传递一个字符串值。json文件位于我的本地系统中,是一个巨大的文件,所以如果我可以将其作为jmeter变量传递,这是有意义的。我尝试了以下方法: 添加JSR223预处理器后,代码如下: 但我得到以下错误: 有人能帮我解决这个问题吗?

  • 我有一个接受JSON的应用程序。它有一个带有@RestController的控制器,然后是一个 这“起作用”是因为它接受根据“MyRequest”对象有效的JSON并对其进行处理。我感兴趣的是捕捉JSON无效的时间。 目前,当有不良数据时会发生什么是Spring似乎会向标准输出写入这样的内容: 这一切都很好,但我想看看请求是什么,这是不好的,这样我就可以在源代码端修复它。 我在玩写“Control

  • 问题内容: 将请求正文与GET请求一起传递是否违反REST风格? 例如在Elasticsearch中过滤一些信息 甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员) 问题答案: 从RFC: GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。 换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随