2016-08-19 67 views
0

我在nodejs中使用csvtojson包。我写了下面的代码来转换我的csv文件,但它不能正确转换为jsonjson中的键没有双括号,因此我无法使用键获取值。显示nodejs - csvtojson没有给出正确的json键输出

var Converter = require("csvtojson").Converter; 
var converter = new Converter({}); 

converter.fromFile("./file.csv", function(err,result){ 
    console.log(result); 
}); 

输出为如下:

[ { a: 1, b: 2, c: 3 }, { a: 3, b: 4, c: 5 } ] 

因此,它提供了错误为 “Key not found!! c

谁能帮。

csv内容如下:

a,b,c 
1,2,3 
3,4,5 
+0

您可以发布您的CSV内容吗? –

+0

@DavidR在文章中添加了csv内容 – Abhinav

+0

从文档中,我觉得输出应该是'[{“a”:1,“b”:2,“c”:3},{“a”: 3,“b”:4,“c”:5}]',问题在于它是一个JSON字符串,在检索密钥之前需要调用JSON.parse。另一个错误可能是你如何访问'c',但你没有显示代码。 – DrakaSAN

回答

1

从文档,似乎输出应该是[{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4, "c": 5}] ,这是一个JSON字符串。

要访问对象的属性,您需要使用JSON.parse进行评估。

另一个错误可能是您如何访问c,但是您未显示该代码。

0

console.log不给你JSON格式的输出,它是JavaScript对象的转储,格式化是不同的。

您需要逐行处理结果。你的结果是一个数组,每个项目都是一个包含所有字段的行。所以,你可以解决第一个行与c键:

result[0]['c'] 

或者你可能要循环到该数组访问的每一行:

converter.fromFile("./file.csv", function(err,result){ 
    for (var i in result) { 
     var line=result[i]; 
     console.log("line "+i+":" + line.c); 
    } 
});  
+0

我想要一个json响应。我有json实用程序,因此它会很容易有一个通用的实用程序,如果我有csv的json,那么我可以直接通过密钥的值。 – Abhinav

+0

你想从JavaScript对象的JSON字符串?然后用 'console.log(JSON.stringify(result));' 事实上,这可以工作: 'JSON.parse(JSON。stringify(result));' – Franck

+0

另外,如果你只是想要一个简单的csv到json转换器,你可以使用模块提供的命令行工具: './node_modules/.bin/csvtojson file.csv> file.json '。 并在第三方应用程序中使用'file.json'。 – Franck