Я пытаюсь отобразить ответ от вызова API, скажем, на объект Product.Кажется, я не могу найти способ сделать это правильно.
Ответ имеет следующую структуру:
{
"data": [
{
"id": 1,
"name": "keyboard",
"details": {
"parent": 1,
"price": 50,
"other": "info"
}
},
{
"id": 2,
"name": "mouse",
"details": {
"parent": 2,
"other": "info",
"price": 20
}
}
],
"total-records": 2,
"more": "something"
}
Порядок деталей ответа не может быть гарантирован.(Обратите внимание на цену в деталях). Я пытаюсь сопоставить объект выше с одним новым объектом, который содержит только следующие свойства:
{
"id": 1,
"name": "keyboard",
"price": 50
},
{
"id": 2,
"name": "mouse",
"price": 20
}
Я использую угловые и Observables для получения данных.Теперь я получаю значение, сопоставляю его и могу либо получить детали, либо свойства объекта 1-го уровня, такие как data.id
или data.name
.Однако получение таких деталей, как цена, немного сбивает меня с толку.
Я много исследовал карты слияний, плоских карт, даже lodash и бесчисленные часы, пытаясь выяснить это, но я не могу найти правильный путьсделать это.
Можно ли использовать фильтр в комбинации карт для достижения этой цели?Любая информация высоко ценится.
Вот мой код:
ngOnInit() {
//Get by criteria
this.productService
.get(url, httpOptions)
.pipe(
map((items: Response<Product>) => {
this.details = items["details"].filter(
// Filter possible null values
details=> details!==null;
);
this.header = items
}),
tap(() => console.log(this.header))
)
.subscribe();
}
// Header is level 1 info like name and id
// Detail is level 2 info like price.
// I have to have a filter on the details because sometimes