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

时间:2014-07-11 20:40:43

标签: javascript json node.js

所以,我试图读取一个json文件并访问文件中写入的属性。

文件是:

  

{       '名称':' SpectrumApp',       '版本':' 0.1.0a',       '描述':' Lorem ipsum dolor坐下来,奉献精神。 Nullam lectus quis odi 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坐在amet dictum erat。 Curabitur eget sem diam。 Quisque hendrerit,sem vitae egestas mollis,sem ipsum porttitor nibh,faucibus urna urna eu nulla。整数orci felis,vestibulum eget nibh eu,pellentesque scelerisque velit。 Maecenas vel mollis tellus。整齐的商品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。',       '键':['频谱','视频游戏','便携式']   }

它类似于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 ...但没有任何作用,当我尝试访问任何属性时,输出是相同的" undefined& #34;

我做错了什么?

非常感谢你!

编辑:当我尝试在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

1 个答案:

答案 0 :(得分:5)

在将单引号转换为双引号以获取有效JSON之后使用JSON.parse

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');