当前位置: 首页 > news >正文

GZIPOutputStream JSON压缩

一、背景

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

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

二、大林子的例子

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.lryc.cn/news/342609.html

相关文章:

  • 毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)
  • 3.1 Gateway之路由请求和转发
  • 人脸识别开源算法库和开源数据库
  • Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗
  • MySql-日期分组
  • 有哪些方法可以在运行时动态生成一个Java类?
  • JAVA两个线程交替打印实现
  • 【C语言】学习C语言
  • C 深入指针(2)
  • FileLink跨网文件交换,推动企业高效协作|半导体行业解决方案
  • 代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇
  • ASP.NET网络在线考试系统
  • 天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码
  • Day1| Java基础 | 1 面向对象特性
  • Spring 事务失效的几种情况
  • 【Linux 命令操作】如何在 Linux 中使用多行注释呢?
  • 【RPC】Dubbo接口测试
  • PVZ2 植物克僵尸【第二期】
  • libcity笔记:libcity/data/batch.py
  • 【Java EE】多线程(二)Thread 类与常用方法
  • AGV无人叉车 | 我们为什么要投资“智慧生产”
  • 【C++】滑动窗口:将x减到0的最小操作数
  • 运动控制“MC_MoveVelocity“功能块详细应用介绍
  • 9种单片机常用的软件架构
  • PyQt5中重要的概念:信号与槽
  • MacOS快速安装FFmpeg,并使用FFmpeg转换视频
  • docker部署nginx并配置https
  • 五一小长假,景区智慧公厕发挥了那些作用?
  • Spring - 9 ( 10000 字 Spring 入门级教程 )
  • shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)