如何从 Dart 中的 Json 创建一个 zip 文件?
How can I create a zip file from a Json in Dart?
我已经下载了 Dart archive 包,但是文档有点空。我有一个对象需要以文件格式序列化,并将其压缩为 zip。
这是我到目前为止设法写的,但它不起作用。
static Future<List<int>> convertMeetingsListToZip(List<Meeting> list) async {
return File('meetings.zip')
.writeAsString(jsonEncode(list))
.then((File encodedFile) {
Archive archive = new Archive();
archive.addFile(new ArchiveFile(
encodedFile.path, encodedFile.lengthSync(), encodedFile));
return ZipEncoder().encode(archive);
});
}
你能帮帮我吗?
没关系,我做到了。方法如下:
static List<int> convertListToZip(List<dynamic> list) {
String jsonEncoded = jsonEncode(list);
List<int> utf8encoded = utf8.encode(jsonEncoded);
ArchiveFile jsonFile =
new ArchiveFile("filename.json", utf8encoded.length, utf8encoded);
Archive zipArchive = new Archive();
zipArchive.addFile(jsonFile);
List<int> zipInBytes = new ZipEncoder().encode(zipArchive);
return zipInBytes;
}
要点是先以字节为单位对文件进行编码(utf8.encode
),然后再将其打包到存档中并对其进行编码。
我已经下载了 Dart archive 包,但是文档有点空。我有一个对象需要以文件格式序列化,并将其压缩为 zip。
这是我到目前为止设法写的,但它不起作用。
static Future<List<int>> convertMeetingsListToZip(List<Meeting> list) async {
return File('meetings.zip')
.writeAsString(jsonEncode(list))
.then((File encodedFile) {
Archive archive = new Archive();
archive.addFile(new ArchiveFile(
encodedFile.path, encodedFile.lengthSync(), encodedFile));
return ZipEncoder().encode(archive);
});
}
你能帮帮我吗?
没关系,我做到了。方法如下:
static List<int> convertListToZip(List<dynamic> list) {
String jsonEncoded = jsonEncode(list);
List<int> utf8encoded = utf8.encode(jsonEncoded);
ArchiveFile jsonFile =
new ArchiveFile("filename.json", utf8encoded.length, utf8encoded);
Archive zipArchive = new Archive();
zipArchive.addFile(jsonFile);
List<int> zipInBytes = new ZipEncoder().encode(zipArchive);
return zipInBytes;
}
要点是先以字节为单位对文件进行编码(utf8.encode
),然后再将其打包到存档中并对其进行编码。