NodeJs 读取 JSON 文件

3
我可以帮您翻译,以下是翻译结果:

我正在尝试使用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
你试过打印data了吗? - thefourtheye
1
如果数据是你说的那样,它应该可以工作。仔细检查数据中的内容。 - BeNdErR
@BeNdErR,你能试一下打开本地计算机上的一个json文件的代码吗?我猜问题可能出在我们打开文件的方式上,因为示例运行正常。我们打开json文件的方式有问题吗? - rksh
1
@rksh 读取数据后,尽快使用console.log(data)打印出来。输出是什么? - BeNdErR
你是否已经执行了 var fs = require('fs'); 并测试了根据 @BeNdErR 的注释,读取文件后是否能够获取到 data - Yosvel Quintero
2个回答

4

[info.json]

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

[main.js]

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

[result]

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

4

您的文件应包含以下内容:

[{"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文件中以错误的方式存储了值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接