【问题标题】:@RequestBody always retuning empty JSON@RequestBody 总是重新调整空 JSON
【发布时间】:2021-08-15 02:06:56
【问题描述】:

在 SpringBoot 中使用 JSONObject 作为@RequestBody 发出POST 请求时,我遇到了一些麻烦。它总是返回一个空的JSON 对象,如下所示:

@PostMapping
    @ResponseBody
    public ResponseEntity<Travel> create(@RequestBody JSONObject travel) {
        
        try {
            
            System.out.println(travel.toString());
.
.
.
.

但我要求邮递员中的所有字段:

提前感谢所有帮助。

【问题讨论】:

  • 你试过@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)吗?
  • @Turing85 是的,同样的事情也会发生。
  • 尝试使用专用 POJO 类或 Map 而不是 JSONObject
  • 使用String代替JSONObject,然后使用JSONObject travelObj = new JSONObject(travel);。看起来您的 JSONObject 无法反序列化传入的 json 字符串。还要检查 org.json JSONObject 版本与 spring 版本兼容性,最后一个选项可能是使用来自 Gson 的 JSONObject,我认为它具有内置的反序列化功能。
  • @AlexShesterov 谢谢,我创建了一个 AddTravelDTO.java 并在 RequestBody 中使用它,就像一个魅力。

标签: java json spring-mvc


【解决方案1】:

关注@AlexShesterov 评论。我将@RequestBody 中的JSONObject 更改为POJO 类,如下所示:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class AddTravelDTO {
    
    private Long id;
    private String orderNumber;
    private String amount;
    private String type;
}

public ResponseEntity<Travel> create(@RequestBody AddTravelDTO travel) {
.
.
.

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多