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

我收到“SyntaxError: Unexpected token u - at Object.parse(native)”

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

4

3 回答 3

0

file.readFile是一个异步动作,你的行为就像它是同步的。

于 2012-11-20T16:53:19.240 回答
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

于 2013-06-15T06:55:40.197 回答
0

readFile是异步的,所以你只需要重新排列你的代码:

var result = null;

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

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

于 2012-11-20T16:58:31.583 回答