Dart的JSON.encode和JSON.decode不适用于BLOB SQL类型。我正在寻找一个解决方案,并找到了很多解释为什么它不能开箱即用(或原生)。
所以我想知道如何有效地使用JSON编码和解码BLOB数据。
编辑1:添加示例。
我在MySQL数据库上有一个名为“some_text”的TEXT类型字段。以下是其内容: “这是some_text字段内容”。
当SQLJocky返回some_text时,它将作为“Blob”存储在var上的Dart中。一个简单的“returnVar.runtimeType”确认了它。
所以现在我需要将这个Blob文本“转换”为普通字符串,因为JSON.encode / decode不能与第一个一起工作。
答案 0 :(得分:0)
这应该有效,但未经过测试
import 'package:crypto/crypto.dart';
var base64String = CryptoUtils.bytesToBase64(yourBlob.toBytes());
另一个方向
var blob = new Blob.fromBytes(CryptoUtils.base64StringToBytes(base64String));
答案 1 :(得分:0)
这个问题相当陈旧,但这可能对某人有用。
我还需要从 sqljocky 返回为Blob的字段中提取字符串,并且我从source code发现Blob有两种方法来提取数据' toString()< / em>'和' toBytes()'。因此,为了对包含Blob数据的sqljocky行进行编码并将其解压缩为字符串,代码将如下所示:
import 'dart:convert';
import 'package:sqljocky5/sqljocky.dart';
...
var rowText = json.encode(row, toEncodable: (dynamic item) {
if (item is Blob) {
return item.toString();
}
return item;
});