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