【问题标题】:JS read json file and use as an objectJS读取json文件并作为对象使用
【发布时间】:2016-04-19 18:19:05
【问题描述】:

我正在尝试获取这片内数组中的项目数

JSON

{
  "collection" : [
    {
      "item": "apple"
    },
    {
      "item": "banana"
    }]
}

使用以下 JS (NodeJS)更新了用户“elssar”的答案

var data = JSON.parse(fs.readFileSync(filePath));
console.log(data.collection.length);

预期结果:2

如果不指定编码data 将是一个缓冲区而不是字符串(感谢用户 nils)。 JSON.parse 应该适用于两者。现在我收到一个错误Unexpected token ? at Object.parse (native)。知道如何解决这个问题吗? (使用节点 5.2.0)

【问题讨论】:

标签: javascript json node.js object


【解决方案1】:

您需要将parse文件的内容转成JSON。

fs.readFile(filePath, function (error, content) {
    var data = JSON.parse(content);
    console.log(data.collection.length);
});

或者

var data = JSON.parse(fs.readFileSync(filePath));

或者,您可以只使用require json 文件(文件扩展名需要为 .json)

var data = require(filePath);
console.log(data.collection.length);

【讨论】:

  • 你的第一个 sn-p 可能不起作用,因为data 是未定义的,即使你使用了content,它也会是一个缓冲区。
  • @nils 哎呀。固定:)
  • 也发现了这一点。仍然对我不起作用。它仍然说data 是未定义的。你给我的替代方案似乎有效。但是为什么我的 Intelli 说它是一个内置函数但还声明:use of an implicitly declared global variable 'require' ??
  • 你还没有设置编码...看看我的重复链接。
  • @nils 不需要。 JSON.parse 无需设置编码即可工作
猜你喜欢
  • 2022-11-27
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多