英文:
Angular changing JSON keys names
问题
export var single: {
value: number;
name: string;
}
英文:
I am quite new to angular and working with API's... In my project I am using ngCharts and this chart requires that the keys names in JSON are "value" and "name"... what I get on the API I'm using is keys names "count" and "label"... how and whre could I change the keys name in my code? I cant change it on API.
this is how I'm getting the data from API in my service:
getSingleCustomerPurchasesChart(id:number) {
return this.httpClient.get<typeof single>(`${environment.apiUrl}stat/prodaja/${id}`)
}
this is the model of data that is required for ngxChart:
export var single: {
value: number;
name: string;
}
this is what the JSON of API looks like:
[
{
"count": 123,
"label": "Lorem ipsum",
"id": "42807"
},
]
答案1
得分: 3
你可以使用rxjs的map操作符:
getSingleCustomerPurchasesChart(id:number) {
return this.httpClient.get<typeof single(`${environment.apiUrl}stat/prodaja/${id}`)
.pipe(map(response => {
return response.map((data) => {
return {
name: data.label,
value: data.count,
};
})
}))
}
英文:
You can use rxjs map operator:
getSingleCustomerPurchasesChart(id:number) {
return this.httpClient.get<typeof single(`${environment.apiUrl}stat/prodaja/${id}`)
.pipe(map(response => {
return response.map((data) => {
return {
name: data.label,
value: data.count,
};
})
}))
}
答案2
得分: 2
你可以使用基本的JavaScript来解决这个问题。以下是一个解决方案,但我需要了解一些关于你的数据和你想要绘制的图表的信息,以确保它能正常工作。此外,这是纯粹的JavaScript,你需要自己输入:
const apiData = [
{
"count": 123,
"label": "Lorem ipsum",
"id": "42807"
},
{
"count": 124,
"label": "Lorem ipsum 2",
"id": "42808"
},
];
const chartData = apiData.map((e) => {
return {
name: e.label,
value: e.count
}
})
console.log(chartData);
请参考这里以获取有关map
方法的更多详细信息。
英文:
You can solve this with basic Javascript I think. Here is a solution below, but I would have to know a little bit about your data and what chart you want to draw to be sure that it's going to work. Also, it's plain old javascript, I leave you the typing :
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
const apiData = [
{
"count": 123,
"label": "Lorem ipsum",
"id": "42807"
},
{
"count": 124,
"label": "Lorem ipsum 2",
"id": "42808"
},
];
const chartData = apiData.map((e) => {
return {
name: e.label,
value: e.count
}
})
console.log(chartData);
<!-- end snippet -->
Please have a look at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map for more details about the map method.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论