java对字符串进行压缩转换复原



import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**
 * 字符串压缩
 */
public class ZipStrUtil {

  /**
   * 恢复字符串
   * @param compressedStr
   * @return
   */
  public static String gunzip(String compressedStr){
    if(compressedStr==null){
      return null;
    }

    ByteArrayOutputStream out= new ByteArrayOutputStream();
    ByteArrayInputStream in=null;
    GZIPInputStream ginzip=null;
    byte[] compressed=null;
    String decompressed = null;
    try {
      compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
      in=new ByteArrayInputStream(compressed);
      ginzip=new GZIPInputStream(in);

      byte[] buffer = new byte[1024];
      int offset = -1;
      while ((offset = ginzip.read(buffer)) != -1) {
        out.write(bu
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的GZIP压缩算法对JSON字符串进行压缩,具体实现步骤如下: 1. 将JSON字符串转换为字节数组。 2. 使用Java中的GZIPOutputStream对字节数组进行压缩,得到压缩后的字节数组。 3. 将压缩后的字节数组转换为Base64编码的字符串,以便于存储和传输。 下面是代码示例: ```java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Base64; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public class JsonCompressor { public static String compress(String json) throws IOException { // 将JSON字符串转换为字节数组 byte[] jsonBytes = json.getBytes("UTF-8"); // 使用GZIP压缩算法对字节数组进行压缩 ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); GZIPOutputStream gzipOut = new GZIPOutputStream(byteOut); gzipOut.write(jsonBytes); gzipOut.flush(); gzipOut.close(); // 将压缩后的字节数组转换为Base64编码的字符串 byte[] compressedBytes = byteOut.toByteArray(); String compressedJson = Base64.getEncoder().encodeToString(compressedBytes); return compressedJson; } public static String decompress(String compressedJson) throws IOException { // 将Base64编码的字符串转换压缩后的字节数组 byte[] compressedBytes = Base64.getDecoder().decode(compressedJson); // 使用GZIP压缩算法对字节数组进行压缩 ByteArrayInputStream byteIn = new ByteArrayInputStream(compressedBytes); GZIPInputStream gzipIn = new GZIPInputStream(byteIn); ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = gzipIn.read(buffer)) > 0) { byteOut.write(buffer, 0, len); } gzipIn.close(); // 将解压缩后的字节数组转换为JSON字符串 byte[] jsonBytes = byteOut.toByteArray(); String json = new String(jsonBytes, "UTF-8"); return json; } } ``` 使用示例: ```java String json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; String compressedJson = JsonCompressor.compress(json); System.out.println(compressedJson); // "H4sIAAAAAAAAAGvMywEAEUjwWQAAAA==" String decompressedJson = JsonCompressor.decompress(compressedJson); System.out.println(decompressedJson); // "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}" ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值