[英]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.