首页 > 编程语言 >java Gzip将json压缩成byte数组

java Gzip将json压缩成byte数组

时间:2024-10-09 16:00:12浏览次数:6  
标签:java String json new Gzip import byte out

`

import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class TestController {

    public static byte[] compress(String str) {
        if (StringUtils.isEmpty(str)) return null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip;
        try {
            gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes(StandardCharsets.UTF_8));
            gzip.close();
        } catch ( Exception e) {
            e.printStackTrace();
        }
        return out.toByteArray();
    }

    public static String uncompressToString(byte[] bytes) {
        if (bytes == null || bytes.length == 0) return null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ByteArrayInputStream in = new ByteArrayInputStream(bytes);
        try {
            GZIPInputStream ungzip = new GZIPInputStream(in);
            byte[] buffer = new byte[1024];
            int n;
            while ((n = ungzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            return out.toString(String.valueOf(StandardCharsets.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        String json = "{\"i\":20241009,\"n\":\"张三丰\",\"g\":18,\"s\":0,\"d\":\"北戴河\"}";
        byte[] compress = compress(json);
        System.out.println("JSON to Byte: " + Arrays.toString(compress));
        String uncompressed = uncompressToString(compress);
        System.out.println("Byte to JSON : " + uncompressed);
    }

}

`

标签:java,String,json,new,Gzip,import,byte,out
From: https://www.cnblogs.com/dawndefend/p/18454488

相关文章

  • JavaScript中的运算符
    一、运算符分类运算符:(operator):也称之为叫操作符。是用来实现赋值、比较和执行运算等功能的符号javaScript中常用的运算符:算数运算符递增和递减运算符比较运算符逻辑运算符赋值运算符1.算数运算符概述:算数运算使用的符号,用于执行两个变量或值得算数运算运算符描述......
  • Java基于SpringBoot的高校体育运动会比赛项目报名系统 +Vue[毕业设计]
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍在高等教育体系中,体育运动会不仅是增强学生体质、培养团队精神的重要途径,也是校园文化的重要组成部分。然而,传统的高校体育运动会报名方式往往存在诸多不便,如报名流程繁琐、信息更......
  • JAVAWEB实现文件上传下载功能实例解析
    需求:大文件上传,批量上传,断点续传,文件夹上传,大文件下载,批量下载,断点下载,文件夹下载文件夹:上传下载需要支持层级结构,采用非压缩方式文件大小:100G前端:vue2,vue3,vue-cli,jquery,html,webuploader后端:JSP,springbootweb服务:tomcat数据库:mysql,oracle,达梦,国产化数据库服务......
  • JAVA接入GPT开发
    SpringAIAlibaba:Java开发者的GPT集成新标准目前,像OpenAI等GPT服务提供商主要提供HTTP接口,这导致大部分Java开发者在接入GPT时缺乏标准化的方法。为解决这一问题,Spring团队推出了SpringAIAlibaba,它作为一套标准化接口,允许Java开发者以统一的方式与不同的GPT服务交互。这......
  • java计算机毕业设计婚纱影楼管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着婚纱摄影行业的蓬勃发展,婚纱影楼的管理变得日益复杂和繁琐。传统的人工管理方式已经无法满足现代婚纱影楼的需求,尤其是在客户信息管理、摄影师调......
  • java计算机毕业设计花品管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活品质的提升,花卉消费逐渐成为一种生活时尚和审美追求。市场上花品种类繁多,消费者对于花卉的需求也日益多样化和个性化。然而,传统的花卉销......
  • Java并发编程:深入探索与实战案例
    Java并发编程:深入探索与实战案例在当今的多核处理器时代,并发编程已成为提升应用程序性能、优化资源利用的关键技术之一。Java,作为一门广泛应用的编程语言,凭借其强大的并发处理能力,在众多编程语言中脱颖而出。本文将深入探讨Java并发编程的核心概念、常用工具及实战案例,旨在......
  • java计算机毕业设计冬奥会志愿者报名系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着2024年冬奥会的日益临近,全球目光聚焦于这一冰雪盛事。作为国际性的体育竞技与交流平台,冬奥会不仅展示了运动员的高超技艺,更成为了各国文化交融的......
  • java计算机毕业设计宠物达人交流社区系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人们生活水平的提高,宠物已成为许多家庭的重要成员。宠物养护、健康、行为训练等问题日益受到宠物主人的关注。然而,面对宠物市......
  • [Javascript] Using defineProperty to observe the object props changes
    constobj={a:1,b:2,c:{a:1,b:2,},};functionisObject(val){returnval!==null&&typeofval==="object";}functionobserve(obj){for(letkeyinobj){letv=obj[key];if(isObject(v)){......