如何在 flutter 中将二进制字符串转换为 json 字符串

How to convert a binary string to json string in flutter

我正在 flutter 中使用 Angel 中断套接字连接,我正在使用套接字获取股票数据。在 return 中,我得到一个二进制压缩字符串,我需要将其转换为 json 字符串。 Angel broking java sdk 在 java 中提供了这种转换,但我想知道如何在 dart 中进行相同的转换。我在这里分享我需要在 dart 中使用的 java 代码以供参考。

 String data = "eJyLrlZKzFayUsrLVtJRKkksBrGT84Ds3OJ0CLM2FgDCiAqQ"; // I am getting this string from socket

            byte[] decoded = Base64.getDecoder().decode(data);
            byte[] result = decompress(decoded);
            String str = new String(result, StandardCharsets.UTF_8);

            JSONArray tickerData = new JSONArray(str);

 public static byte[] decompress(byte[] compressedTxt) throws IOException {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    try (OutputStream ios = new InflaterOutputStream(os)) {
        ios.write(compressedTxt);
    }

    return os.toByteArray();
}

请帮助我将此 java 代码转换为 flutter dart。

以下代码:

final str = 'eJyLrlZKzFayUsrLVtJRKkksBrGT84Ds3OJ0CLM2FgDCiAqQ';
print(utf8.fuse(zlib).fuse(base64).decode(str));

打印[{"ak":"nk","task":"cn","msg":"cn"}]

编辑 但是如果你想对解码后的字符串做的唯一一件事就是调用 json.decode 方法,那么你可以更进一步:

List l = json.fuse(utf8).fuse(zlib).fuse(base64).decode(str));
print(l);
print(l[0]);
print(l[0]['task']);