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

在Spring Rest控制器中获取JSON解析错误(MismatchedInputException)

吕文林
2023-03-14

我对Spring很陌生。当我在Postman中尝试POST方法时,我遇到了一个JSON解析错误。基本上,我有一个类,我想以列表的形式调用另一个类。

@Entity
@Data
@EqualsAndHashCode(callSuper = true)
public class Tag extends AbstractEntity {

    @Column (nullable = false)
    private String tag;
@Entity
@Data
@EqualsAndHashCode(callSuper = true)
public class Question extends AbstractEntity {

    @Column (nullable = false)
    private String title;
    @Column (nullable = false)
    private String content;
    @OneToMany
    @Column (nullable = false)
    private List<Tag> tag;

以下是我的控制器:

@RestController
@RequestMapping("v1/enquiry")
public class EnquiryController {

    @Autowired
    private QuestionRepository questionRepository;

    @PostMapping
    public ResponseEntity<Question> createEnquiry(@RequestBody Question question) {
        if (question.getTitle() == null | question.getContent() == null) {
            throw new BadRequest("Please fill in the required fields!");
        }

        Question enq = questionRepository.save(question);
        return ResponseEntity.ok().body(enq);
    }

当我使用以下内容执行POST方法时:

{ 
   "title": "question",
   "content": "cogito",
   "tag": ["java", "rest"]
}

我得到以下错误。我尝试了所有的建议,类似的条件张贴在周围。都不起作用。我做错了什么?

{ 
   "title": "question",
   "content": "cogito",
   "tag": [{"tag":"java"},{"tag": "rest"}]
}
@Entity
@Data
@EqualsAndHashCode(callSuper = true)
public class Question extends AbstractEntity {

    @Column (nullable = false)
    private String title;
    @Column (nullable = false)
    private String content;
    @OneToMany(cascade = CascadeType.PERSIST)
    @Column (nullable = false)
    private List<Tag> tag;

共有1个答案

丁翊歌
2023-03-14

请更改您的JSON结构。

{ "title": "question", "content": "cogito", "tag": [{"tag":"java"},{"tag": "rest"}] }

还要在映射中添加级联。

@OneToMany (cascade = CascadeType.ALL)
 @Column (nullable = false) 
 private List<Tag> tag;
 类似资料:
  • 下面的API接受来自客户端的json字符串,并将其映射到电子邮件对象中。如何将请求正文()作为原始字符串获取?(我需要原始字符串和键入版本的参数) PS:这个问题不是重复的:如何在SpringREST控制器中访问普通json主体?

  • 我一直得到一个JSON解析器错误,每次我尝试连接从Android到php帐户。下面你会看到我得到的错误: 谁能帮帮我吗。。。 PHP代码: Android代码: Android代码: 公共JSONObject getJSONFromUrl(字符串url,列表参数){ 注册用户JSONObject PhP警告: php代码: 链接89是$no_of_rows 用户表结构: mysql_error:

  • 代码: =========== 返回json数据的php代码 另一个URL返回以下数据 ===================现在,我遇到以下错误(还提到console.log resp) ======================= 我想要的是1。解析Json响应。“顶级Cat1”将在其下方列出标题列表。 我做错了什么。

  • 问题内容: 我有一个返回JSON的控制器。它采用一种形式,该形式通过spring注释进行验证。我可以从BindingResult获取FieldError列表,但是它们不包含JSP将在标记中显示的文本。如何获取错误文本以JSON形式发送回去? JSONREsponse类只是一个POJO 调用BindingResult.getAllErrors()返回FieldError对象的数组,但没有实际错误。

  • 问题内容: 尝试对mongoexport使用查询会导致错误。但是mongo-client会评估相同的查询,而不会出错。 在mongo-client中: 使用mongoexport: 产生的错误: 但是预先在mongoexport中进行乘法: 作品! 为什么mongo在这两种情况下对查询的评估不同? 问题答案: 该命令行实用程序支持传递查询 JSON 格式,但您要评估 的JavaScript 在您的

  • 和 是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪: 它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中? 编辑:添加API响应(格式化):