javascript - 无法使用nodejs访问json对象的属性

标签 javascript json node.js

因此,我尝试读取 json 文件并访问文件中写入的属性。

文件是:

{ 'name': 'SpectrumApp', 'version': '0.1.0a', 'description': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a lectus quis odio semper suscipit. Duis ac placerat mauris, vitae lacinia orci. Fusce ultrices enim ligula, in suscipit arcu volutpat a. Proin posuere aliquam consequat. Proin porttitor ullamcorper ligula. Sed sit amet dictum erat. Curabitur eget sem diam. Quisque hendrerit, sem vitae egestas mollis, sem ipsum porttitor nibh, a faucibus urna urna eu nulla. Integer orci felis, vestibulum eget nibh eu, pellentesque scelerisque velit. Maecenas vel mollis tellus. Integer commodo mauris scelerisque consectetur tempus. Nulla eu turpis ornare, scelerisque eros et, convallis urna. Quisque ac sapien sed lacus posuere fringilla vel eu ante. Suspendisse felis enim, viverra eu diam eu, posuere convallis ante. Etiam vel arcu turpis.', 'keys': ['spectrum', 'video game', 'portable'] }

就像 npm/grunt 的 package.json 一样。为了读取文件,我使用:

/**
 * JSON
 */
var json = fs.readFileSync(__dirname + '/apps/SpectrumApp/package.json');

log.debug('json = ' + json);
log.debug('json.name = ' + json['name']);

最后,第一个输出与上面相同,第二个输出是“未定义”,即使我执行 json.name。我尝试过的其他方法是 JSON.stringify,然后是 JSON.parse,最后只是 JSON.parse...但是没有任何效果,当我尝试访问任何属性时,输出都是相同的“未定义”。

我做错了什么?

非常感谢!

编辑:当我尝试在 var json 中执行 JSON.parse 时,输出为:

undefined:2
    'name': 'SpectrumApp',
    ^
SyntaxError: Unexpected token '
    at Object.parse (native)
    at Object.<anonymous> (/home/todi/Projetos/Spectrum/src/server/server.js:178:28)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

最佳答案

将单引号转换为双引号后使用 JSON.parse 来获取有效的 JSON:

var jsonString = fs.readFileSync(__dirname + '/apps/SpectrumApp/package.json').replace(/\'/g, "\"")
var json = JSON.parse(jsonString);

或者,如果您的文件已包含有效的 JSON,您可以请求该文件并将其直接作为 JSON 导入。此方法主要用于配置使用:

var json = require(__dirname + '/apps/SpectrumApp/package.json');

关于javascript - 无法使用nodejs访问json对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24706203/

相关文章:

javascript - 指定 dom 元素的高度/宽度会使它们渲染得更快吗?

php - CodeIgniter session 错误

javascript - 解析json数组流

node.js - 将回调传递给以await 为前缀的函数。执行顺序

javascript - 构建实时股票报价应用程序? (大量 XMLHttpRequest?)

javascript - jQuery 中的 HTML 字符串返回错误

javascript - 在函数内调用 javascript 函数

javascript - 在 .ajax POST 中启用 CORS

node.js - 通过在 Docker 容器中缓存包来加速构建

javascript - mongoose express node.js javascript函数返回未定义