java - 从字符串中提取 gz 值
问题描述
我有一个存储数据的键值存储。当我检索该值时,它是一个带有属性“compressed_value”的 JSON,这个值是一个字符串,我不知道如何解压缩或反序列化它。
我尝试了很多方法,其中一种尝试使用具有不同字符集的 .getBytes() 并使用 GZIPInputStream 将字符串转换为 byte[] 但我总是收到错误“java.util.zip.ZipException: Not in GZIP格式”。
值类似于:“H4sIAAAAAAAA/wtOzC3ISVUoSa0oUSjJSCxRyFRITswrUUhJLU4tykzMyaxK1VFISczLVQQAkIb0eioAAAA=”。当我将它粘贴到这样的网络中时,它会毫无问题地反序列化该值。
示例代码
public class Main {
public static void main(String[] args) throws IOException {
String compressedValue = "H4sIAAAAAAAA/wtOzC3ISVUoSa0oUSjJSCxRyFRITswrUUhJLU4tykzMyaxK1VFISczLVQQAkIb0eioAAAA=";
try {
final int BUFFER_SIZE = 32;
ByteArrayInputStream is = new ByteArrayInputStream(compressedValue.getBytes());
GZIPInputStream gis = new GZIPInputStream(is);
byte[] data = new byte[BUFFER_SIZE];
int bytesRead;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((bytesRead = gis.read(data)) != -1) {
baos.write(data, 0, bytesRead);
}
gis.close();
is.close();
System.out.println(baos.toString("UTF-8"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
解决方案
推荐阅读
- postgresql - 在所有模式 Postgres 上运行查询
- java - 在 Spring-Boot-Upgrade 2.0.4 之后,我的 Rest-Query-Response 变慢
- python-2.7 - 尝试通过 FancyURLopener 读取 URL 时出现 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:590) 错误
- node.js - 设置 npm config proxy ubuntu 后,npm 不工作
- java - 面向对象编程中的数组
- css - Wordpress Woocommerce 文本彼此太近
- python - 包内显式相对导入的问题
- php - 表单验证和记录插入在 codeigniter 中不起作用
- ios - UIActivityViewController 在 Twitter (v7.33) 上共享文本 + URL + 图像在 iOS 12 上不起作用
- android - 当我合并分支时,Android Gradle 插件无法识别 SourceSet 'instrumentTest'