簡體   English   中英

如何訪問 Angular 發送到 Spring 啟動后端的嵌套結構的 JSON 對象?

[英]How to access a JSON object of nested structure sent by Angular to Spring boot backend?

假設我有一個來自 angular 的 post http 請求,它具有以下 JSON 結構:

   {
       "abc":{
               "pqr":2,
               "lmn":5,
               "xyz":89
             },
       "def":[a,b,c,d],
       "klm":{
               //object attributes
             }
   }

它作為來自 Angular HttpClient 的 post 請求發送。

現在在 Spring Boot Controller 中,我使用 Hashmap 接受它

@PostMapping("/createXyzFunctionality")
    public void createXyzFunctionality(@RequestBody Map<String, Object> json)
    {
      for (Map.Entry<String, Object> entry : json.entrySet())
      {
        //Using entry.getKey() and entry.getValue() I can access the attributes 
        //"abc","def","klm" as string but I want to access as class objects
        .....
      }
    }

現在,我有一個“abc”的模型類,但不完全是我的類的實例,所以當我這樣做時

CustomClass val = (CustomClass) entry.getValue();

我得到了 ClassCastException,幫助我訪問 hashmap 中對象的屬性,而無需更改 Spring Boot 中的模型。

CustomClass{
      private Integer pqr,lmn,xyz;
      private String extraVariable;
      //getters setters
}

我希望 pqr,lmn,xyz 從“abc”中獲取值。

而不是@RequestBody Map<String, Object> json您應該期望RequestBody中的類的對象。

所以創建一組 DTO:

public class BodyClass {
    private Abc abc;
    private List<String> def;
    private Klm klm;
    //getters & setters
}
public class Abc {
    private Integer pqr;
    private Integer lmn;
    private Integer xyz;
}
public class Klm {
    //some parameters, getters & setters
}

並接受@RequestBody BodyClass bodyClass ,例如:

@PostMapping("/createXyzFunctionality")
public void createXyzFunctionality(@RequestBody BodyClass bodyClass) {
    //your logic here
}

bodyClass將包含您發送的 JSON 的所有屬性。

暫無
暫無

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

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