Как я могу создать zip-файл из Json в Dart? - PullRequest
0 голосов
/ 23 апреля 2019

Я скачал пакет 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);
    });
  }

Не могли бы вы мне помочь?

1 Ответ

1 голос
/ 24 апреля 2019

Неважно, я сделал это.Вот как это делается:

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), прежде чем обернуть его в архив и закодировать.

...