我在sFTP服务器中有一个json文件,我使用ssh2-sftp-client库去获取它。我不想将此文件写入本地文件,我希望能够读取它并将其保存到代码中的JSON变量中。但我似乎无法将缓冲区输出转换为JSON。下面是我的代码:
const Client = require('ssh2-sftp-client');
async function getFTPFile() {
const sftp = new Client();
const config = {
host: ...,
username: ...,
password: ...
};
return sftp.connect(config)
.then(() => sftp.get('./directory/Data.json'))
.then((data) => {
console.log(data);
return JSON.parse(data.toString());
});
}我确认它正在拉取正确的文件,但当我尝试将缓冲区数组转换为json对象时,我得到了以下错误:
SyntaxError: Unexpected token � in JSON at position 0
at JSON.parse (<anonymous>)如何解决此错误?
发布于 2021-08-30 20:46:54
原来这个文件是用utf16编码的,并且以一个ZWNBSP字符开头。因此,以下方法解决了该问题:
let file = data.toString('utf16le');
if (file.charCodeAt(0) === 0xFEFF) {
file = file.slice(1)
}
return JSON.parse(file);https://stackoverflow.com/questions/68823973
复制相似问题