【微信小程序】引入第三方库poke对GZIP压缩数据进行解压

  1. 使用 npm 包管理工具:

    • 首先,在小程序的根目录下执行 npm init 初始化项目,生成 package.json 文件。
    • 然后,通过 npm 安装 pako:npm install pako
    • 接下来,在小程序的根目录下创建一个名为 miniprogram_npm 的文件夹。
    • node_modules/pako 文件夹复制到 miniprogram_npm 文件夹中。
    • 在需要使用 pako 的页面或组件中的 js 文件中使用 require() 引入 pako:
    const pako = require('pako');
    
  2. 通过 CDN 引入:

    • 打开 project.config.json 文件,添加以下配置,指定需要引入的第三方库:
    {
          
          
      "setting": {
          
          
        "urlCheck": true,
        "es6": true,
        "postcss": true,
        "minified": true,
        "newFeature": true
      },
      "packOptions": {
          
          
        "ignore": []
      },
      "compileType": "miniprogram",
      "libVersion": "2.14.4",
      "appid": "your appid",
      "projectname": "your projectname",
      "debugOptions": {
          
          
        "hidedInDevtools": []
      },
      "cdnUrl": {
          
          
        "default": "https://unpkg.com/"
      },
      "usingComponents": {
          
          }
    }
    
    • 在需要使用 pako 的页面或组件中的 js 文件中使用 import 引入 pako:
    import pako from 'pako';
    

无论是使用 npm 包管理工具还是通过 CDN 引入,都需要在小程序开发工具中进行构建,以确保引入的第三方库可以被正确识别和使用。

请注意,微信小程序的环境和浏览器环境有差异,可能需要进行一些额外的适配工作,以确保 pako 库在小程序中正常运行。


例子

将字符串 "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}" 转换为对象

  • 并将其中的 [] 部分转换为字节数组(byte array),再使用 GZIP 算法进行解压缩,按照以下步骤进行操作:
  1. 首先,使用 JSON.parse() 方法将字符串转换为对象:
const jsonString = "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}";
const obj = JSON.parse(jsonString);
  1. 接下来,将 obj.data 字段的值转换为数组:
const dataArray = JSON.parse(obj.data);
  1. 然后,创建一个 Uint8Array 对象,将 dataArray 的值作为参数传递给它,以将数组转换为无符号 8 位整型数组:
const uint8Array = new Uint8Array(dataArray);
  1. 最后,使用 pako 库(一个用于处理 GZIP 压缩和解压缩的 JavaScript 库)进行解压缩。你可以使用 pako.inflate() 方法解压缩 uint8Array 对象:
const inflatedArray = pako.inflate(uint8Array);

请确保在使用 pako 库之前,先在项目中引入该库。

上述步骤完成后,inflatedArray 将包含解压缩后的字节数组数据。

猜你喜欢

转载自blog.csdn.net/gao511147456/article/details/132019991