Solana web3.js 将 onProgramAccountChange 通知解析为 JSON

Solana web3.js parse onProgramAccountChange notifications to JSON

如何将 connection.onProgramAccountChange 通知数据解析为 JSON?

https://solana-labs.github.io/solana-web3.js/modules.html#AccountInfo

文档将数据指定为类型 T,对我来说通常是 Buffer

示例代码:

let progKey = new PublicKey("<program key here>");
conn.onProgramAccountChange(progKey, programCallback);
function programCallback(keyedAccountInfo: KeyedAccountInfo, context: Context) {
  let data = keyedAccountInfo.accountInfo.data.toString("hex");
  let ownerId = keyedAccountInfo.accountInfo.owner.toBase58();
  let accId = keyedAccountInfo.accountId.toBase58();
  console.log(`======
  owner: ${ownerId}
  accId: ${accId}
  data: ${data}`);
}

在此特定实例中,数据类型实际上只是一个缓冲区,还是我需要做一些额外的事情来解码它?解码成十六进制、utf8、base64、base58 都不行。

尽管这是 programSubscribe,但通知格式与 getProgramAccounts 相同。因此,答案可以在我的另一个答案中找到: