客户端是一个有角度的网络应用程序。我尝试向 Spring Boot REST API 发送 Map
这是 POJO 定义:
public class ClasseurDTO {
private Map<String,String>[] ongletGeneralite;
public ClasseurDTO() {
}
public Map<String, String>[] getOngletGeneralite() {
return ongletGeneralite;
}
public void setOngletGeneralite(Map<String, String>[] ongletGeneralite) {
this.ongletGeneralite = ongletGeneralite;
}
@Override
public String toString() {
// parse ongletGeneralite object
String str = "";
for (Map<String, String> map : ongletGeneralite) {
for (Map.Entry<String, String> entry : map.entrySet()) {
str += entry.getKey() + " : " + entry.getValue() + " ,";
}
}
return "ClasseurDTO [ongletGeneralite=" + str + "]";
}
}
这是打字稿类型def
export type ClasseurDTO = {
ongletGeneralite : Map<string, string>[]
}
API的方法定义:
@PostMapping("/public/observations/import-observations")
public ResponseEntity<String> importObservations(@RequestBody ClasseurDTO classeur) {
observationService.importObservations(classeur);
return ResponseEntity.ok().body("Importation terminée");
}
这是http调用
importClasseur(classeur: ClasseurDTO): Observable<HttpResponse<{}>> {
console.log("importClasseur" , classeur)
return this.http
.post(`${this.resourceUrlPublic}/import-observations`, classeur, { observe: 'response' });
}
有人可以指出问题出在哪里吗?
我继续调查并尝试了几件事。 我只是将输入类型更改为 string[][][] 而不是 Map 列表,让所有剩余的源代码保持不变,并注意到嵌套项不为空。 所以我最终扩展了定义并在客户端使用它:
export class CellDataClasseur {
cellData : string[] = []
}
export class LigneDataClasseur {
ligneData : CellDataClasseur [] = [];
}
export class ClasseurDTO {
ongletGeneralite: LigneDataClasseur[] = [];
}
还有这个 POJO 服务器端:
public class CellDataClasseur {
private List<String> cellData;
public List<String> getCellData() {
return cellData;
}
public void setCellData(List<String> cellData) {
this.cellData = cellData;
}
}
我提出这个问题,以防有人可以解释如何序列化 Map(如果可能的话),或者如何改进我的解决方案