如何在 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']);
我正在 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']);