NodeJs读取JSON文件

时间:2016-07-12 09:53:57

标签: javascript json node.js

我想用NodeJs读取一个json文件

我的代码很基本,

  var obj = require("./sample.json");
  console.log(obj[0]);

sample.json文件包含一个像这样的字符串化JSON,

"[{\"sample\":\"good\",\"val\":76159}]"

然而,console.log输出是'['不是变量中的第一个元素。我也尝试过像这样打开文件。

var obj;
fs.readFile('sample.json', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
  console.log(obj[0]);
});

但是这里的输出也是'['为什么json文件没有正确解析?我该如何解决?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您的文件应包含:

[{"sample":"good","val":76159}]

如果包含

"[{\"sample\":\"good\",\"val\":76159}]"

然后它被编码两次。它仍然是有效的JSON,因为它是一个字符串,但是这个JSON不代表JavaScript对象:

[{
  sample:"good",
  val:76159
}]

但是内容为[{"sample":"good","val":76159}]的字符串。

如果您添加第二个解析(第一个解析由require隐式完成):

var obj = JSON.parse(require("./sample.json"));
console.log(obj[0]);

然后您将看到记录了正确的信息 因此,您最初的问题是您在./sample.json中以错误的方式存储了值。

答案 1 :(得分:2)

[info.json]

[{
    "name" : "Young",
    "age" : 100,
    "skill" : "js"
}]

[main.js]

var jsonObj = require('./info.json');
console.log(jsonObj[0]);

[结果]

{ name: 'Young', age: 100, skill: 'js' }