我已经看到了一些将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 ] ] }}
答案 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。