восстановить поля a json - PullRequest
0 голосов
/ 08 мая 2020

У меня есть json вроде этого:

[ {
    "id": 1,
    "libraryName": "lib1",
    "bookName": "book1",
    "bookPrice": 250.45,
    "unitSold": 305
},
{
    "id": 2,
    "libraryName": "lib1",
    "bookName": "book2",
    "bookPrice": 450.45,
    "unitSold": 150
},
{
    "id": 3,
    "libraryName": "lib1",
    "bookName": "book3",
    "bookPrice": 120.25,
    "unitSold": 400
}]

Я хочу восстановить все bookNames этого json в списке без создания метода getBookNames (потому что мне нужен стандартный способ для любого поле json) Итак, в component.ts я использовал:

  sales:any;
  getSale () {
  this.service.getSales().subscribe(data=> {this.sales = data,
  console.log(this.sales.bookName)
  })
  }

Это дает мне неопределенный объект в консоли! Как я могу решить эту проблему без создания метода getBookNames ()?

Это мой класс:

export interface Sale {
id: number
bookname : string
Libraryname: string
Bookprice : number
Unitsold : number
}

Это мой сервис:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Sale } from './Sale';
@Injectable({
providedIn: 'root'
})
export class MyserviceService {

constructor(private http: HttpClient) { }

getSales () {
return this.http.get<Sale>("http://localhost:8081/sales/all")
}

}

1 Ответ

1 голос
/ 08 мая 2020

Данные, полученные из API, представляют собой массив. Таким образом, вы можете использовать функцию array map() для получения списка всех свойств из элементов. Попробуйте следующее

sales: any;
unitsSold = [];

getSale () {
  this.service.getSales().subscribe(data=> {
    this.sales = data,
    console.log(data.map(item => item.bookName)); // <-- output: ['book1', 'book2', 'book3'];
    console.log(data.map(item => item.id)); // <-- output: [1, 2, 3];
    this.unitsSold = data.map(item => item.unitSold); // <-- [305, 150, 400]
  });
}

Я не вижу здесь ничего потерянного для восстановления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...