Javascript SSH 缓冲区到 JSON
Javascript SSH Buffer to JSON
我在 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>)
如何解决此错误?
原来文件是用 utf16 编码的,并且以 ZWNBSP 字符开头。所以以下解决了问题:
let file = data.toString('utf16le');
if (file.charCodeAt(0) === 0xFEFF) {
file = file.slice(1)
}
return JSON.parse(file);
我在 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>)
如何解决此错误?
原来文件是用 utf16 编码的,并且以 ZWNBSP 字符开头。所以以下解决了问题:
let file = data.toString('utf16le');
if (file.charCodeAt(0) === 0xFEFF) {
file = file.slice(1)
}
return JSON.parse(file);