让我在序言中承认我是一个完全的编程和 JavaScript 菜鸟,而这一事实是我的麻烦的根源。
我正在尝试从使用 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'
导致这个错误的代码是:
fs.readFile('/savedcustomobjectarray', function (err, data) {
var customobjectarray = json.parse(data);
});
我猜我对这一切的看法都是错误的。我看到有些人提到了此类事情的序列化器,但我想仔细检查这是否是我所需要的(并且也许获得一些关于如何在这种情况下使用它们的指导)。不过,stringify 输出似乎很好,所以我不确定为什么 JSON 不能将 humpty dumpty 重新组合在一起。任何帮助将不胜感激。
编辑:
text.replace 行位于 /vendor/commonjs-utils/lib/json-ext.js 中,而不是我的代码中。我以为这是 JSON 的一部分。也许我错了?有没有不同的方法通过 JSON 解析我的对象数组?
fs.readFile
需要 2 或 3 个参数,当仅传递文件名和回调时,您的回调函数将获取以下两个参数(err, data)
where data
是一个原始的buffer http://nodejs.org/docs/v0.4.0/api/buffers.html.
所以正确的做法是:
fs.readFile('/savedcustomobjectarray', function (err, data) {
var customobjectarray = JSON.parse(data.toString('utf8'));
});
data.toString
将编码作为第一个参数。
或者,您可以将编码指定为第二个参数fs.readFile
并将一个字符串传递给回调:
fs.readFile('/savedcustomobjectarray', 'utf8', function (err, data) {
var customobjectarray = JSON.parse(data);
});
节点APIdocs http://nodejs.org/docs/v0.4.0/api/all.html是你最好的朋友!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)