簡體   English   中英

如何發送 postman Map 密鑰為 object?

[英]How to send in postman Map with key as object?

我有這樣一個實體結構,所以我想發送一個發布請求並創建具有所有屬性的訂單。 如何請求正文在 postman 中應該是什么樣子?

@Entity
public class Order {
    @Id int id;

    String name;

    @ElementCollection
    @CollectionTable(name="INVENTORY", joinColumns=@JoinColumn(name="STORE"))
    @Column(name="COPIES_IN_STOCK")
    @MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID")
    Map<Item, Integer> items;
 
}

@Entity
public class Item {
    @Id long id;
    String name;

}
@RestController
@RequestMapping("api/v1/order")
public class OrderController {

    public final OrderService orderService;

    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }
    @PostMapping
    public void saveOrder(@RequestBody Order order){
         orderService.save(order);
    }
}

這是錯誤的身體,所以我試着根據我的數據找出它應該是什么樣子 model

{
     "name":"first order",
     "items": {
         "item-1":{
              "name": "frist item"  
         },
         "item-2":{
             "name": "second item"  
         }
     }
}

期望獲得狀態以從具有整個結構的客戶訂單接收

來自這里的示例數據我得到的截圖

我認為@RequestBody默認情況下無法處理此示例請求:

{
     "name":"first order",
     "items": {
         "item-1":{
              "name": "frist item"  
         },
         "item-2":{
             "name": "second item"  
         }
     }
}

為此你應該嘗試這樣的事情:

@Entity
public class Order {
    @Id int id;

    String name;

    @ElementCollection
    @CollectionTable(name="INVENTORY", joinColumns=@JoinColumn(name="STORE"))
    @Column(name="COPIES_IN_STOCK")
    @MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID")
    Map<Item, Integer> items;
 
    @JsonAnySetter
    public void addItems(String key, Item item) {
        items.put(item, Integer.valueOf(key.split("-")));
    }
    
}

如果您想將項目的重復次數計為 hashmap 中的鍵,請將您的邏輯放入此設置器中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM