在Angular 5中检索JSON数据
我是通过检索数据的,我的问题是我无法在中获取我的密钥的特定值 我返回的数据是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
[
{
"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;
}
}