GZIPOutputStream JSON压缩

embedded/2024/10/19 2:18:52/

一、背景

小王瞥了一眼历史记录表,不禁惊呼:“这表怎么这么大?”同事们闻声纷纷围拢过来查看。仔细一瞧,发现这个表的大小竟然超过了3G。主管随即指示小王打开相应的表数据检查,发现其中存储了用户的权限信息,这些权限数据被转换成了JSON字符串并直接入库。众人面面相觑,小王更是感到困惑,问道:“这该如何是好?”

大林子思索片刻,建议道:“或许我们可以尝试对JSON进行压缩。”小王疑惑地问:“那能减少多少空间呢?”大林子估算道:“应该能够降低三分之二左右。”小王半信半疑,毕竟都是字符串,他觉得差别不会如此之大。为了证明自己的观点,大林子立刻编写了一个示例,并展示了一番压缩效果,让在场的所有人都感到惊讶。

二、大林子的例子

java">public static void main(String[] args) throws IOException {// 原始的JSON字符串 内部数据不能展示,可以替换自己的JSON字符串,越大越明显String jsonString = "[{\"id\": \"11111\"}]";byte[] compressedData1 = jsonString.getBytes();System.out.println("Pre-compressed data Length: "+compressedData1.length);// 将JSON对象转换为字符串System.out.println("Original JSON String: "+jsonString);// 压缩JSON字符串ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);gzipOutputStream.write(jsonString.getBytes("UTF-8"));gzipOutputStream.close();byte[] compressedData = byteArrayOutputStream.toByteArray();System.out.println("Compressed Data Length: "+compressedData.length);// 解压缩数据并还原为JSON字符串ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(compressedData);GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream);ByteArrayOutputStream decompressedOutputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len;while ((len = gzipInputStream.read(buffer)) != -1) {decompressedOutputStream.write(buffer, 0, len);}gzipInputStream.close();String decompressedJsonString = decompressedOutputStream.toString("UTF-8");System.out.println("Decompressed JSON String: " + decompressedJsonString);}


http://www.ppmy.cn/embedded/28538.html

相关文章

GPT每日面试题—csrf攻击的原理和解决方案

充分利用ChatGPT的优势,帮助我们快速准备前端面试。今日问题:csrf原理和解决方案? Q:如果在前端面试中,被问到csrf原理和解决方案,怎么回答比较好,全面具体的描述一下 A:在前端面试中&#xf…

STM32(c语言基础)

1.硬件部分:按键,传感器 传感器模块:光敏电阻,热敏电阻,红外接收管 光敏电阻:光线越强,光敏电阻的阻值就越小; 热敏电阻:温度越高,热敏电阻的阻值越小&…

每日OJ题_DFS爆搜深搜回溯剪枝②_力扣526. 优美的排列

目录 力扣526. 优美的排列 解析代码 力扣526. 优美的排列 526. 优美的排列 难度 中等 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述条件 之一 ,该数组就是一个 优美的排列 &#…

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上,英伟达引领行业风向,宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

vue中的数据共享场景和数据共享方法总结

1、数据共享场景有哪些 页面之间共享数据: 不同页面之间需要共享数据时,可以通过 Vuex 状态管理库或路由参数等方式进行数据传递。例如,在路由参数中传递数据或将数据存储在 Vuex 中,在不同页面间进行数据交换。页面和组件之间共…

Linux专栏05:Linux基本指令之目录处理指令

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux基本指令之目录处理指令 编号:05 文章目录 Linux基…

移植 SquareLine 导出的 UI 源码到 HMI-Board

目录 准备工具创建 HMI 工程设计 UIUI 移植板级验证更多内容 HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件,取代传统的 HMI 主控板 硬件,一套硬件即可实现 HMI IoT 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态…

04 - 步骤 JSON input

简介 Kettle 的 JSON Input 步骤是用于从 JSON 格式的数据源中读取数据的步骤。它允许用户指定 JSON 格式的输入数据,然后将其转换成 Kettle 中的行流数据,以供后续的数据处理、转换和加载操作使用。 使用 场景 1、拖拽到面板 2、指定JSON input 为 K…