使用javascript将json字符串转换为csv

时间:2013-09-14 22:02:23

标签: javascript json

我已经看到了一些将json转换为csv的帖子 例如'http://jsfiddle.net/FLR4v/'。 我无法让他们将这个json转换为csv。

这是我的代码(这种方法效果很好但不适用于下面注释掉的var json3)

 <html>
    <head>
    <title>JSON to CSV</title>
    <script src="json.js" type="text/javascript"></script>
    <script type="text/javascript">

    //var json3 = { "inp1:val1": { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ] ] }}
    var json3 = { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ], ] }
    DownloadJSON2CSV(json3.data);

    function DownloadJSON2CSV(objArray)
    {
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

        var str = '';

        for (var i = 0; i < array.length; i++) {
            var line = '';

            for (var index in array[i]) {
                line += array[i][index] + ',';
            }

            // Here is an example where you would wrap the values in double quotes
            // for (var index in array[i]) {
            //    line += '"' + array[i][index] + '",';
            // }

            line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }
        window.open( "data:text/csv;charset=utf-8," + escape(str))
    }

    </script>

   </head>
   <body>
    <h1>This page does nothing....</h1>
</body>
</html>

上面的代码工作正常。   我需要的是以上需要使用下面的

var json3 = { "inp1:val1": { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ] ] }}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你仍然没有清楚地解释你想要的输出是什么(“CSV”太模糊了,特别是当你的原始jsfiddle生成分号分开的输出时)。

但是,如果您使用此对象,您似乎确实说您的代码有效:

    var json3 = { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ], ] }

...作为您的函数的输入,如下所示:

DownloadJSON2CSV(json3.data);

但是现在你想要处理一个结构略有不同的输入对象,基本上是相同的东西,但在原始结构周围有一个额外的“包裹”层:

var json3 = { "inp1:val1": { "data": [ [ 1378267200000, 0.0743 ], [ 1378270800000, 0.1787 ] ] }}

如果我准确地总结了您的问题,这就是您的需求:

DownloadJSON2CSV(json3["inp1:val1"].data);

这将调用您的函数传递由最外层对象的“inp1:val1”属性引用的对象的“data”属性引用的数组数组。

(注意你所谓的“json”根本不是json,它是一个碰巧使用JS的对象文字语法创建的对象。)

为您做好准备:阅读MDN文章Working With Objects