在Angular 5中检索JSON数据

在Angular 5中检索JSON数据,json,angular,typescript,Json,Angular,Typescript,我是通过检索数据的,我的问题是我无法在中获取我的密钥的特定值 我返回的数据是json格式的: [ { "id": 1, "name": "Albany", "manufacture": "Albany Superior Low Gi Sliced Brown Seed Bread 700g", "price": 15.49, "category": "Food", "type": "Bread

我是通过检索数据的,我的问题是我无法在中获取我的密钥的特定值

我返回的数据是json格式的:

[
    {
        "id": 1,
        "name": "Albany",
        "manufacture": "Albany Superior Low Gi Sliced Brown Seed Bread 700g",
        "price": 15.49,
        "category": "Food",
        "type": "Breads",
        "image": "data:image/jpeg;base64,/9j/4AAQSkZJ..."
    },
    {
        "id": 2,
        "name": "Blue Ribbon",
        "manufacture": "Blue Ribbon Brown Plus Low Gi Bread 700g",
        "price": 13.99,
        "category": "Food",
        "type": "Breads",
        "image": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
    }
]
在Angular,我的服务如下:

export class ProductService {

  prodType:ProductModel;
  productList:object;

  prodList: Array<ProductModel> = [];
  prodMap: Map<number, ProductModel>;

  constructor( private http: HttpClient ) { }

    getAllProducts(): Array<ProductModel>{
    this.http.get<Array<ProductModel>>('/product/service/send/all/products').subscribe(
      data => {

        console.log( data );

      },
      error => {
        console.error("HTTP FAILURE ERROR!!!");
      }
    );
    return this.prodList;

  }

  getProductByType( productSearch:string ){

    this.productList = this.prodList.find( x=> x.getType() == productSearch);
    console.log( this.productList);
  }  
}
百万美元问题;假设我想在我的数据中搜索产品类型,只想从json数据中使用类型milk来控制台日志产品


我该怎么做?我已经搜索了类似的解决方案,但没有任何帮助。

您可以添加映射,修改来自http get调用的响应,并在将其分配到列表之前对其进行过滤。当然,如果你想把它们分开,那么你需要把逻辑分成两种方法:一种是得到普通列表,然后过滤上面的数据

 getAllProducts(): Array<ProductModel>{
    return this.http.get<Array<ProductModel>>('/product/service/send/all/products').map(data => data.filter(value => value.type == 'milk')).subscribe() ;
  }

首先将HTTP结果分配给类成员,然后过滤数据,然后将过滤后的数组项记录在console.log中

export class ProductService {

  prodType:ProductModel;
  productList:object;

  prodList: Array<ProductModel> = [];
  prodMap: Map<number, ProductModel>;

  constructor( private http: HttpClient ) { }

    getAllProducts() {
    this.http.get<Array<ProductModel>>('/product/service/send/all/products').subscribe(
      datas => {

        this.prodList = datas;

      },
      error => {
        console.error("HTTP FAILURE ERROR!!!");
      }
    );    
  }

  getProductByType( productSearch:string ): Array<ProductModel>{

    let filteredProducts:Array<ProductModel> = this.prodList.filter(product => product.type == productSearch);

    filteredProducts.forEach(product=> console.log(product);

    return filteredProducts;

  }  
}

console.log data.filterx=>x.type=='Milk';请参阅array.filter查看我修改了代码并在浏览器中收到此错误:error TypeError:product.getType不是TypeScript中的函数访问器的格式与直接获取myObj.mymeber的Java方式不同。您编写的调用代码是什么?public getType:string{return this.type;}public getImage:string{return this.image;}似乎有什么问题?在加载所有数据之前,您不调用getProductByType吗?
export class ProductService {

  prodType:ProductModel;
  productList:object;

  prodList: Array<ProductModel> = [];
  prodMap: Map<number, ProductModel>;

  constructor( private http: HttpClient ) { }

    getAllProducts() {
    this.http.get<Array<ProductModel>>('/product/service/send/all/products').subscribe(
      datas => {

        this.prodList = datas;

      },
      error => {
        console.error("HTTP FAILURE ERROR!!!");
      }
    );    
  }

  getProductByType( productSearch:string ): Array<ProductModel>{

    let filteredProducts:Array<ProductModel> = this.prodList.filter(product => product.type == productSearch);

    filteredProducts.forEach(product=> console.log(product);

    return filteredProducts;

  }  
}