我正在嘗試從我的反應應用程序向我的服務器發送POST請求,但是我不斷收到狀態 400 Bad Request錯誤。例外是:“org.springframework.http.converter.HttpMessageNotReadableException”。錯誤信息是:“JSON 解析錯誤:無法從 START_ARRAY 令牌中反序列化 java.util.LinkedHashMap 的實例;嵌套異常是 com.fasterxml.jackson.databind.JsonMappingException:無法從 START_ARRAY 令牌中反序列化 java.util.LinkedHashMap 的實例\n [來源:java.io.PushbackInputStream@6a188b06;行:1,列:1]"我嘗試使用POSTMAN測試 API,但仍然遇到同樣的錯誤。@PostMapping("/cart")public Cart create(@RequestBody CartRequest cartRequest){ return cartRepository.save(new Cart(0,cartRequest.getProductname()));}我的模特課是public class CartRequest {String productname;public CartRequest(int productid, String productname) { this.productname = productname;}public String getProductname() { return productname;}public void setProductname(String productname) { this.productname = productname;}@Overridepublic String toString() { return "CartRequest{" + ", productname='" + productname + '\'' + '}';}}存儲庫類如下public interface CartRespository extends JpaRepository<Cart, Integer> { }請求代碼如下import React, { Component } from "react";import axios from 'axios';import NavBar from "./navbar";export default class Products extends Component {state = { isLoading: true, groups: [],};constructor(props){ super(props); { this.add = this.add.bind(this); }}add(id, name) { axios({ method: 'post', url: '/api/cart', body: { productid: id, productname: name } });}async componentDidMount() { const response = await fetch('api/product'); const body = await response.json(); this.setState({ groups: body, isLoading: false });}發送請求的Button如下{this.state.groups.map(group => <button key={group.id} onClick={() => this.add(group.productid, group.name)} className="flex-c-m size1 bg4 bo-rad-23 hov1 s-text1 trans-0-4">Add to Cart</button>)}我正在嘗試執行的是從產品中接收信息并將其添加到購物車中。已使用GET請求接收到產品信息。
1 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
使您的控制器的方法如下所示:
@PostMapping("/cart")
public Cart create(@RequestBody Map<Integer, Integer> body){
int productid = body.get("productid");
String productname=body.get("productname");
return cartRepository.save(new Cart(productid, productname));
}
順便說一句,您可以將 json 作為模型而不是 Map 接收。你最好創建一個新的模型類 - CartRequest 現在只有一個字段 -productname并在控制器中接受 taht 模型
@PostMapping("/cart")
public Cart create(@RequestBody CartRequest cartRequest){
return cartRepository.save(new Cart(0, cartRequest.getProductname()));
}
如您所見,我并沒有說要productid在模型中包含字段。這是因為你的實體在被 ORM 保存時必須沒有 id(例如休眠)
添加回答
舉報
0/150
提交
取消