cli*_*xby 2 javascript json fs node.js javascript-objects
让我先说明我是一个完整的编程和javascript noob,这个事实是我麻烦的根源.
我正在尝试使用json.stringify从我保存到的文本文件中填充大量自定义对象.当我抓取文件内容和json.parse(他们)时,我收到以下错误:
var backSlashRemoved = text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'
^
TypeError: Object (contents of file) has no method 'replace'
Run Code Online (Sandbox Code Playgroud)
导致此错误的代码是:
fs.readFile('/savedcustomobjectarray', function (err, data) {
var customobjectarray = json.parse(data);
});
Run Code Online (Sandbox Code Playgroud)
我猜我错了.我看到有些人提到了这类事情的序列化程序,但我想仔细检查这是否是我需要的(并且可能在这种情况下如何使用它们获得一些方向).看起来stringify输出似乎很好,所以我不确定为什么JSON不能再将humpty dumpty重新组合在一起.任何帮助将不胜感激.
编辑:text.replace行在/vendor/commonjs-utils/lib/json-ext.js,而不是我的代码.我以为这是JSON的一部分.也许我错了?有没有不同的方法通过JSON解析我的对象数组?
fs.readFile当传递文件名和回调时,需要2或3个参数,那么你的回调函数将得到以下两个参数(err, data),其中data是一个原始缓冲区.
所以正确的方法是:
fs.readFile('/savedcustomobjectarray', function (err, data) {
var customobjectarray = JSON.parse(data.toString('utf8'));
});
Run Code Online (Sandbox Code Playgroud)
data.toString 将编码作为第一个参数.
Alternitavley你可以指定编码作为第二个参数,fs.readFile并让它将字符串传递给回调:
fs.readFile('/savedcustomobjectarray', 'utf8', function (err, data) {
var customobjectarray = JSON.parse(data);
});
Run Code Online (Sandbox Code Playgroud)
Node API 文档是你最好的朋友!
| 归档时间: |
|
| 查看次数: |
3867 次 |
| 最近记录: |