以json格式将对象写入zip文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以json格式将对象写入zip文件相关的知识,希望对你有一定的参考价值。

我的目标是以json格式将对象写入zip文件。最简单的方法是:

ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
String json = gson.toJson(object);
zip.write(json.getBytes());

但我想避免将整个对象加载到单个字符串。所以我将一个zip流包装到一个writer对象中:

Writer writer = new OutputStreamWriter(zip);

之后我按以下方式编写条目:

zip.putNextEntry(entry);
gson.toJson(content, writer);
writer.flush();
zip.closeEntry();
zip.flush();

它工作正常,但同时使用writer和zip对象似乎非常混乱。有没有更好的解决方案来解决这个问题?

答案

你可以让Jackson更简单一些,它有直接写入qazxsw poi的方法

OutputStream
另一答案

您可以在ObjectMapper mapper = new ObjectMapper(); try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))){ out.putNextEntry(new ZipEntry("object.json")); mapper.writeValue(out, object); } 语句中声明一个或多个资源。例如

try-with-resources

close方法按此顺序自动调用。请注意,资源的close方法按其创建的相反顺序调用。关于冲洗,try ( ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile))); Writer writer = new OutputStreamWriter(zip); ) { zip.putNextEntry(entry); gson.toJson(content, writer); }

public abstract void close()抛出IOException

关闭流,先冲洗它。关闭流后,进一步的write()或flush()调用将导致抛出IOException。关闭先前关闭的流无效。

以上是关于以json格式将对象写入zip文件的主要内容,如果未能解决你的问题,请参考以下文章

如何以正确的格式写入 JSON 文件

以json格式将sqlite数据库中的数据写入python中的文本文件

java中如何把输入的数据以json格式保存在文本里面

python实现将json数据以json格式写入txt文件

使用 Excel 对象快速设置数字格式

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”