【问题标题】:How to pass a object with list key and value in Rest Api with Spring Boot如何使用 Spring Boot 在 Rest Api 中传递具有列表键和值的对象
【发布时间】:2021-03-08 05:01:50
【问题描述】:

我将带有格式数据的对象传递给 Spring Boot Api:

const examRequest = {
  examId: 10,
  timer: 100,
  anwsers: "{1:2, 2:1}", (pair question ID and value)
};

const submitData = (examRequest) => {
  const url = "/exams/submit";
  return axios.post(url, examRequest);

},

后端:

@PostMapping(value = "/exams/submit")
public ResponseEntity<?> submitData(
        @Valid @RequestBody AnswerResponse answerResponse) {
    return examService.submitData(answerResponse);
}

AnswerResponse.java

private Long examId;

private Integer timer;

List<AnswerPair> answers;

AnswerPair.java

private Long questionId;

private Long keyAnswer;

但我无法将数据传递到后端并得到错误:

JSON 解析错误:无法从 START_OBJECT 令牌中反序列化 java.util.ArrayList&lt;AnswerPair&gt; 的实例

请帮助我。非常感谢

【问题讨论】:

    标签: javascript spring-boot spring-data-jpa


    【解决方案1】:

    在后端你期望答案是对象数组,但在前端你发送的是字符串。

    请求对象需要如下所示

    const examRequest = {
      examId: 10,
      timer: 100,
      anwsers: [
        {questionId: 1, keyAnswer: 2}, 
        {questionId: 2, keyAnswer: 1}
      ]
    };
    

    【讨论】:

    • 是的,非常感谢您提出更多问题:请帮我将 {1:2, 2:1} 转换为 [ {questionId: 1, keyAnswer: 2}, {questionId: 2, keyAnswer: 1}]
    • 确定你是在创建新问题还是我应该在哪里发布答案?
    • 我刚刚解决了这个问题。非常感谢:D
    猜你喜欢
    • 2021-09-23
    • 2020-07-07
    • 2016-01-31
    • 2018-04-04
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    相关资源
    最近更新 更多