繁体   English   中英

如何通过翻阅更改json数组的格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM