angular - Cum să obții valoarea unui Java Map în Typescript
Folosesc Spring Boot ca backend și Angular 7 ca frontend într-o aplicație. Trebuie să trimit un map ca răspuns. De exemplu, să spunem:
Map<String, Object> additionalResponse = new HashMap<>() {
{
put("key1","value2");
put("key2","value2");
}
};
Transmit această hartă prin DTO de răspuns către Angular, care este:
public class SearchResponseDto implements Serializable {
private Map<String, Object> additionalResponse;
}
Acum, în Angular, îl folosesc astfel:
export class SearchResponseDto {
additionalResponse: Map<string, any>;
}
Pot obține valoarea din additionalResponse, dar când încerc să folosesc funcția get în additionalResponse, îmi returnează valoarea undefined. Ce ar trebui să fac pentru a folosi additionalResponse ca Map în Angular?
Editare: Folosesc răspunsul backend în Angular ca:
fetchData() {
fetchResponse().
.subscribe(
response => {
this.response = response;
},
errorResponse => {
},
);
}
fetchResponse(): Observable<SearchResponseDto> {
return this.http.post<SearchResponseDto>(
<api-endpoints>
);
}
Și încerc să folosesc ca this.response.additionalResponse.get('key1') și primesc valoarea ca undefined, dar obțin valoarea din this.response.additionalResponse
Pe Postman, primesc răspunsul ca:
{
"additionalResponse": {
"key1": "value2",
"key2": "value2"
}
}
Răspuns #1
const response= {
"additionalResponse": {
"key1": "value2",
"key2": "value2"
}
}
const { additionalResponse } = response;
const map = Object.entries(additionalResponse).map(([key, value])=>{
console.log(key, value)
})
SAU îl poți converti în Harta:
const map = new Map();
const response= {
"additionalResponse": {
"key1": "value2",
"key2": "value2"
}
}
const { additionalResponse } = response;
Object.entries(additionalResponse).forEach(([key, value])=>{
console.log(key, value)
map.set(key, value)
})
[ACTUALIZAT]
fetchData() {
fetchResponse().
.subscribe(
response => {
const { additionalResponse } = response;
Object.entries(additionalResponse).forEach(([key, value])=>{
console.log(key, value)
map.set(key, value)
})
},
errorResponse => {
},
);
}
Răspunsul #2
Iterează prin obiectul response.additionalResponse și creează un nou map și extrage cheia astfel:
var mapResp = new Map();
for(key in response.additionalResponse){
mapResp.set(key, response.additionalResponse[key]);
}
mapResp.get('key1'); // this will give you value2
