尝试从节点js中的.json文件解析字符串到JSON时出错

时间:2012-11-20 16:48:23

标签: javascript json node.js filesystems

var jsonObject = collages;

file.writeFile('collage.json', JSON.stringify(jsonObject), function(err){
    if (err) throw err;
    console.log('Success');
});


var result = '';
result += file.readFile('collage.json', 'utf-8', function(err, data) {
    if(err) throw err;
    console.log(data);
});
JSON.parse(result);

我得到一个"语法错误:意外的令牌u - 在Object.parse(native)"

我是JSON的新手,我似乎无法重新创建我写出来的对象。当我打印出结果时,我有字符串化的json对象,但是当我尝试解析该字符串时,会给出错误。对象拼贴只是一个包含6个字段(x值,y值,宽度等)的图层对象数组。任何帮助都将非常感激,我想阅读JSON对象,以便我可以在阅读时重新创建拼贴。

3 个答案:

答案 0 :(得分:0)

file.readFile是一个异步操作,你表现得像是同步的。

答案 1 :(得分:0)

readFile是异步的,因此您只需稍微重新排列代码:

var result = null;

file.readFile('collage.json', 'utf-8', function(err, data) {
    if(err) throw err;
    result = JSON.parse(data);
});

请记住,对于异步函数,您必须在回调中执行相关代码。

答案 2 :(得分:0)

您可以使用readFileSync同步执行此操作,例如:

var result = file.readFileSync('collage.json').toString();

对于json文件,Node.js提供了一种更简单的方法来实现此目的:

var result = require('./callage.json');

require将注意到.json扩展名并将该文件解析为json。

http://nodejs.org/api/fs.html#fs_fs_readfilesync_filename_options http://nodejs.org/api/modules.html#modules_file_modules