无法从对象值(令牌“JsonToken.START_OBJECT”)反序列化“java.lang.Long”类型的值

问题描述 投票:0回答:2

通过邮递员针对以下代码进行 POST API 调用时出现以下错误。

要求:根据 、 和 的列表下订单。考虑到订单仅意味着将每个 的当前库存减少 .

Spring Boot 应用程序运行良好,只是在 Postman 中收到 400 Bad request 并在控制台中关注。

错误日志 2023-03-01T00:43:19.065 + 05:30警告53443 --- [nio-8090-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法反序列化值来自对象值的

java.lang.Long
类型(标记
JsonToken.START_OBJECT
)]

以下是我添加的课程的详细信息:

**Controller Class**

@PostMapping("/shop/order")
public ResponseEntity<String> placeOrder(@RequestBody Map<String, Long> orderDetails) {
    try {
        partService.placeOrder(orderDetails);
        return ResponseEntity.ok().body("Order placed successfully!");
    } catch (Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to place order");
    }
}

存储库类

    public interface PartRepository extends CrudRepository < PartDetails, String > {

    @Query("SELECT p FROM PartDetails p WHERE p.carModelId = :carModelId")

    List < PartDetails > findByCarModelId(String carModelId);

    @Query("SELECT p FROM PartDetails p WHERE p.componentId = :componentId")

    List < PartDetails > findByComponentId(String componentId);

    **Service Class Logic**

    @Transactional
    public void placeOrder(Map < String, Long > orderDetails) {
        for (Map.Entry < String, Long > entry: orderDetails.entrySet()) {
            String componentId = entry.getKey();
            Long unitInStock = entry.getValue();
            List < PartDetails > partStockOptional = partRepository.findByComponentId(componentId);
            // PartDetails partStock = partStockOptional.orElseThrow(() -> new ResourceNotFoundException("Part stock not found with component ID: " + componentId));
            PartDetails partStock = (PartDetails) partStockOptional;
            Long currentUnits = partStock.getUnitInStock();
            if (currentUnits < unitInStock) {
                throw new RuntimeException("Insufficient units in stock for component ID: " + componentId);
            }
            partStock.setUnitInStock(currentUnits - unitInStock);
            partRepository.save(partStock);
        }
    }

    **Entity Class**

    package com.example.ecombackend.Entity;

    import jakarta.persistence.*;

    @Entity
    @Table
    public class PartDetails {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        @Column(name = "car_model_id")
        private String carModelId;
        @Column
        private String componentName;
        @Column
        private String componentId;
        @Column(name = "unit_in_stock")
        private Long unitInStock;

        public PartDetails() {}

        public PartDetails(String carModelIds, String componentNames, String componentIds, Long unitInStocks) {
            carModelId = carModelIds;
            componentName = componentNames;
            componentId = componentIds;
            unitInStock = unitInStocks;
        }

        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getCarModelId() {
            return carModelId;
        }

        public String getComponentName() {
            return componentName;
        }

        public String getComponentId() {
            return componentId;
        }

        public Long getUnitInStock() {
            return unitInStock;
        }

        public void setCarModelId(String carModelId) {
            this.carModelId = carModelId;
        }

        public void setComponentName(String componentName) {
            this.componentName = componentName;
        }

        public void setComponentId(String componentId) {
            this.componentId = componentId;
        }

        public void setUnitInStock(Long unitInStock) {
            this.unitInStock = unitInStock;
        }

    }

`

java json spring-boot lang httpexception
2个回答
0
投票

邮递员中你的身体需要 { “EA1”:5,“BA1”:3 } 不是 { “订单详细信息”:{ “EA1”:5,“BA1”:3 } }


0
投票

不是这个: { “id”:4 }

只要给:

 4

在邮递员的身体里... 我希望这会起作用

© www.soinside.com 2019 - 2024. All rights reserved.