【问题标题】:How to parse gzipped data in NodeJS submitted by external api [duplicate]如何解析外部api提交的NodeJS中的gzip压缩数据[重复]
【发布时间】:2021-08-04 12:05:27
【问题描述】:

一个外部 API 向我的 postback_url 发送一个 POST 请求,其结果以 gzip 格式压缩。这是我在身体参数中得到的。顺便说一句,我缩短了输出,因为它是一个很长的字符串。

body: 'H4sIAAAAAAAAA+z963bbuLIwir4Kk/5mYi1LDEndpVby6WrLtny3bDnulcGrRIsSZZK62dEY3xPsP+cdzivsMc7P/Sj7SU4VQFIkRTl2OumevWZmz1gkCBSAQqFuKABPb2eqZevm+G3pLcfyrMAJPJcXim+Tb21HdKb2F9lU1LclgYP/+Wkj1bbFPiS/PRmykNXRRyoFkBEKjK3KmCibtvO2BIUc0R4inOkY3nnvXbUs01p/f1v6/PRWVxBKgcvwGS6dyuTzQorjcrkUVp4SBEUuFCU1Vygq39k8rshvNs9S7anhBNo3EZ0BNOftLI3VqNYEfvqm2TdUeDCtvjjW5be02V/6qgOPA2dkwM+LWv5H8q0iOuLb0tNbcaJDs9watOlYduhABCDb2HC/clv94iwnmLRuhiGO+1PorYuJt+oYEofqcm5aiE3VUEfq2DEtZgKZGGmqG4pqkeb34fPT3dspNKCt3GHX77yC8Ha3pejd2xXWasoittbDfyEDmJwASiVRHn6ZWgbAHjjOxC7dfbj74Eyl+aRYzN3nWHWhylNHTUHf2amdUkXbSfGsOBIfzbE4t1nZHN19gIe7D4oGf2TRMBDk2wB0ij4P6Yo602XsuKLaQ8dEVJpATW/n+lgx5/bblTfChMJegpgohgHrijkS9bE/FNjKbUiIHQ9osupSIc6wFFdIcRmG50tcuiSkmV0kE8imO+ooOFPIO2n3hNAzTyGFoFx6UNhMtpBNZ7K3HkGW3v7+RjFl7A+DCR9/x78MASqbE7Vy9/buLXnFLPCGA0bGy5YH6khkAQV3Hy5U0ZIH5wSF9ik0A8pgHyG/Or57C0BVUfn4+0h1REYeiJatOvDp6rKVKuBXmm6OHcA1pJuW3tehGDMWR1ilpWrACJCqNrJWx5KwdzUedO61y/YN1xDEjJg7Pq0+nLaze+JicV7VWwX+5vJ+/0B4OMw00/vzdLfVyajiQa1//viYydaPT52ckBGnymx3vn9yMNeq1Wa1Wq3p6vJgJo+MsXi

如何解压它们并将它们转换为 JSON 格式?我尝试使用https://nodejs.org/api/zlib.html 给出的代码,但失败了。我将非常感谢一些易于理解的示例代码或任何参考。

【问题讨论】:

  • 数据是 Base64 编码的。您需要先将 Base64 解码为原始二进制文件,然后再对其进行压缩。
  • @MarkAdler const buff = Buffer.from(event.body, 'base64');你的意思是这样的吗?
  • 应该可以的。
  • 是否有可能获得“工作”的身体工资?而不是短版?
  • 是的。这里是anotepad.com/notes/c7ccprqc

标签: javascript node.js gzip zlib


【解决方案1】:

如果它是 base64 中的 gzip,那么你可以像这样解码它。

const zlib = require('zlib');

const buffer = Buffer.from(data, 'base64');

zlib.unzip(buffer, { finishFlush: zlib.constants.Z_SYNC_FLUSH }, (err, buffer) => {
    if (err) {
      console.error('An error occurred:', err);
    }
    console.log(JSON.parse(buffer.toString()));
});

【讨论】:

  • 试过了。输出类似于 WH+P���y��h&H�K���?�;lX���R-��:h�u�o=7x�D���9�^ٵ�/���� �,S���Q�!V"z���5�DAV�7{f�d���h47�����=P��L1��rm�n�X2~�<m&��|[���'��āy�e�Vvx�_١P8E�'��%
  • 那么base64中就没有文字了。外部 API 以哪种格式返回您的数据?
  • POST 请求,其结果以 gzip 格式压缩
  • 好的,应该是这样的
  • 任何将它们转换为 JSON 输出的提示?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2012-08-22
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多