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