简体   繁体   English

JSON Javascript中的不同对象

[英]JSON different objects in Javascript

I am using the code below in order to create an object (below): 我正在使用下面的代码来创建对象(如下):

            var data3 = [];
            data3.push('{"headers":["Dimension 1","Metric 1","Metric 2"],"rows":[');
            for (var i in results.data)
            {
                object =  '["'+ results.data[i].Country +'",'+ results.data[i].Price +','+ results.data[i].Discount+'],';
                data3.push(object);
            }
            data3.push(']}');

What I am trying to return is the following object: 我试图返回的是以下对象:

  var json_data= {"headers":["Dimension 1","Metric 1","Metric 2"],"rows":[["Australia",174,23],["Canada",502,17],["France",242,37],["Germany",102,42],["United Kingdom",126,44],["United States",1246,47],["Australia",680,80],["Canada",1241,66],["Canada",1241,66],["France",150,30],["Germany",244,22],["United Kingdom",501,9],["United States",4960,41],["Australia",9,8],["Canada",3655,70],["France",1654,95],["Germany",1190,36],["United Kingdom",1222,38],["United States",7941,53],["Australia",6829,56],["Canada",1664,75],["France",2995,88],["Germany",1487,100],["United Kingdom",9245,29],["United States",9008,66],["Australia",9376,7],["Canada",1531,31],["France",5421,22],["Germany",6975,41],["United Kingdom",4320,100],["United States",3200,41],["Australia",6688,41],["Canada",699,42],["France",5403,70],["Germany",6377,49],["United Kingdom",2471,14],["United States",6650,4],["Australia",865,70],["Canada",511,20],["France",981,36],["Germany",57,10],["United Kingdom",675,38],["United States",40,72],["Australia",400,63],["Canada",971,90],["France",357,93],["Germany",820,40],["United Kingdom",520,32],["United States",448,24],["Australia",513,40],["Canada",977,8],["France",118,84],["Germany",161,29],["United Kingdom",239,89],["United States",327,79]]};

How can I create the object without having to convert to a string? 如何创建对象而不必转换为字符串?

Starting from results.data you can just rearrange stuff and build new Objects without ever descending into String hell. results.data开始,您可以重新排列内容并构建新的Object,而无需深入到String hell。

Use Array.map() to turn the server response into the desired rows array, then compose a new Object: 使用Array.map()将服务器响应转换为所需的行数组,然后Array.map()一个新的Object:

 const results = { data: [{ Country: "Australia", Price: 174, Discount: 23 }, { Country: "Canada", Price: 502, Discount: 17 }, { Country: "France", Price: 242, Discount: 37 }, { Country: "Germany", Price: 102, Discount: 42 } ] } const rows = results.data.map(row => [row.Country, row.Price, row.Discount]); var data3 = { "headers": ["Dimension 1", "Metric 1", "Metric 2"], "rows": rows }; console.log(data3); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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