[英]how to change the format of json array by loping over
嗨,我正在从 API 获取数据,但我希望我的数据采用不同的格式,以便以后可以传递给函数。 我想将键的名称更改为不同的名称,因为我创建了一个图表,并且只有在我以某种方式向其发送数据时才会绘制这是我从 API 中得到的
data = {
"status": "success",
"from": "DB",
"indice": "KSE100",
"data": [
{
"stock_sector_name": "Tc",
"sector_score": "0828",
"stocks": [
{
"stock_symbol": "TRG",
"stock_score": 44
},
{
"stock_symbol": "SYS",
"stock_score": 33
}
]
},
{
"stock_sector_name": "OIL",
"sector_score": "0828",
"stocks": [
{
"stock_symbol": "FFS",
"stock_score": 44
},
{
"stock_symbol": "SMS",
"stock_score": 33
}
]
},
]
}
But I want my data to look like this like this
data = {
"name": "KSE100",
"children": [
{
"name": "A",
'points': -9,
"children": [
{
"stock_title": "A",
"value": 12,
},
{
"stock_title": "B",
"value": 4,
},
]
},
{
"name": "B",
'points': 20,
"children": [
{
"stock_title": "A",
"value": 12,
},
{
"name": "B",
"value": 4,
},
]
},
]
}
Like I want to replace
stock_sector_name = name
sector_score = value
stocks = children
stock_symbol = name
stock_score = value
我一直在尝试这个很长时间,但仍然无法弄清楚
function convert(d){
return {
name : d.indice,
children : d.data.map(y=>{
return {
name : y.stock_sector_name,
points : y.sector_score,
children : y.stocks.map(z=>{
return {
stock_title: z.stock_symbol,
value : z.stock_score
}
})
}
})
}
}
你可以做这样的事情
const data = { "status": "success", "from": "DB", "indice": "KSE100", "data": [{ "stock_sector_name": "Tc", "sector_score": "0828", "stocks": [{ "stock_symbol": "TRG", "stock_score": 44 }, { "stock_symbol": "SYS", "stock_score": 33 } ] }, { "stock_sector_name": "OIL", "sector_score": "0828", "stocks": [{ "stock_symbol": "FFS", "stock_score": 44 }, { "stock_symbol": "SMS", "stock_score": 33 } ] }, ] } const data2 = { "name": "KSE100", "children": [{ "name": "A", 'points': -9, "children": [{ "stock_title": "A", "value": 12, }, { "stock_title": "B", "value": 4, }, ] }, { "name": "B", 'points': 20, "children": [{ "stock_title": "A", "value": 12, }, { "name": "B", "value": 4, }, ] }, ] } //stock_sector_name = name //sector_score = value //stocks = children //stock_symbol = stock_title //stock_score = value const keys = { stock_sector_name: "name", sector_score: "points", stocks: "children", stock_symbol: "stock_title", stock_score: "value", indice: "name", //data: "children" } const rename = (value) => { if (!value || typeof value !== 'object') return value; if (Array.isArray(value)) return value.map(rename); return Object.fromEntries(Object .entries(value) .map(([k, v]) => [keys[k] || k, rename(v)]) ); } renamedObj = rename(data); console.log(renamedObj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.