Blob和JSON:如何编码和解码

时间:2014-08-16 17:25:42

标签: json dart blob

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不能与第一个一起工作。

2 个答案:

答案 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;
});