Json响应有一个gzip编码的字符串。
var dataList = [
{"Data": "compressedata"},
{"Data": "compressedData"}
];
我尝试了很多方法来解压缩字符串,但都没有得到预期的结果。
List<int> res = base64.decode(base64.normalize(zipText));
print(utf8.decode(res));
其中zipText是来自json的字符串,它会抛出错误
Unhandled Exception: FormatException: Unexpected extension byte (at offset 5)
另一种方法
Uint8List compressed = base64.decode(zipText);
var gzipBytes = new GZipDecoder().decodeBytes(compressed);
print(gzipBytes);
抛出错误
Unhandled Exception: FormatException: Invalid GZip Signature flutter
任何帮助都是非常感谢的。
1条答案
按热度按时间fnatzsnv1#
根据抛出的错误,问题似乎来自您尝试解码的字符串。json响应中的数据是否正确解析为字符串?您可能需要考虑验证json响应中的“compressedData”是否有效,是否可以使用gzip解码。
如果
zipText
上的值确实访问了dataList
中的数据-这是一个List〈Map〈String,String〉〉,请确保您能够通过var zipText = '${_dataList[index]['Data']}';
访问“compressedData除此之外,还需要将
GZipDecoder().decodeBytes(Uint8List)
中的值解码为String。下面是一个简单的沙箱,您可以使用它。本示例中的
decode(String)
方法使用您提供的代码片段。