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

如何在SpringREST控制器中获取原始JSON主体?

叶晋
2023-03-14

下面的API接受来自客户端的json字符串,并将其映射到电子邮件对象中。如何将请求正文(电子邮件)作为原始字符串获取?(我需要原始字符串和键入版本的email参数)

PS:这个问题不是重复的:如何在SpringREST控制器中访问普通json主体?

@PostMapping(value = "/mailsender")
public ResponseEntity<Void> sendMail(@RequestBody Email email) {
    //...
    return new ResponseEntity<>(HttpStatus.OK);
}

共有3个答案

吕琪
2023-03-14

您可以使用GSON库创建字符串类型的json

Gson gson = new Gson();

@PostMapping(value = "/endpoint")
public ResponseEntity<Void> actionController(@RequestBody Car car) {
    //...
    log.info("Object as String: " + this.gson.toJson(car));
    return new ResponseEntity<>(HttpStatus.OK);
}
明星剑
2023-03-14

Spring在后面使用Jackson,您可以使用它将其序列化为字符串。像这样:

@Autowired private ObjectMapper jacksonMapper;

@PostMapping(value = "/mailsender")
public ResponseEntity<Void> sendMail(@RequestBody Email email) {
    //...
    log.info("Object as String: " + jacksonMapper.writeValueAsString(email));
    return new ResponseEntity<>(HttpStatus.OK);
}
齐铭
2023-03-14

您可以用多种方法来实现,清单2

 1. **Taking string as the paramater**,
     @PostMapping(value = "/mailsender")
        public ResponseEntity<Void> sendMail(@RequestBody String email) {
            //... the email is the string can be converted to Json using new JSONObject(email) or using jackson.
            return new ResponseEntity<>(HttpStatus.OK);
        }

 2. **Using Jackson** 
         @PostMapping(value = "/mailsender")
            public ResponseEntity<Void> sendMail(@RequestBody Email email) {
                //...
                ObjectMapper mapper = new ObjectMapper(); 
                String email = mapper.writeValueAsString(email); //this is in string now
                return new ResponseEntity<>(HttpStatus.OK);
            }
 类似资料:
  • 问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601

  • 我想要的是这样的JSON格式: 现在我把我的代码: 我的基本数据结构定义在实体包中,使用方法可以返回字符串类型的blog标题: 模型视图中,在这个类中,我使用,它的工作原理是: 服务类代码,我使用JPA方法从MySQL:: 那么,我如何通过获得JSON格式字符串列表

  • 我想从我的控制器类中处理阶段事件(即隐藏)。所以我所要做的就是添加一个这样的侦听器: 但问题是初始化在该代码之后立即开始: 在此代码之前: 因此,getScene返回null。 我自己找到的唯一解决方法是将侦听器添加到,当它变得不为空时,我得到场景,将我最终检索阶段的侦听器处理添加到它的中。这一切都以将所需的侦听器设置为阶段事件而结束。 我觉得听众太多了。 这是解决我问题的唯一方法吗?

  • 我的Rest控制器 我的异常处理无效的原始 json 帖子。我尝试使用请求。 IllegalStateException:已经为此请求调用了getInputStream() 我想在这个异常上保留日志输入原始json数据。 有人能帮我吗?谢谢。 更新 作为@Sean Carrol的建议。我尝试按照建议使用HttpServletRequest estWrapper,但它仍然不起作用。 我在InputS

  • 如何获得原始json输出。如果可能的话,我不想实现用户数据类和解析器。有什么办法吗? 标记重复的帖子(获得原始HTTP响应与改造)不是为Kotlin和我需要Kotlin版本。

  • 我对Spring很陌生。当我在Postman中尝试POST方法时,我遇到了一个JSON解析错误。基本上,我有一个类,我想以列表的形式调用另一个类。 以下是我的控制器: 当我使用以下内容执行POST方法时: 我得到以下错误。我尝试了所有的建议,类似的条件张贴在周围。都不起作用。我做错了什么?