【发布时间】:2014-10-10 02:47:36
【问题描述】:
Dart 的 JSON.encode 和 JSON.decode 不适用于 BLOB SQL 类型。我正在寻找解决方案,并找到了很多关于为什么它不能开箱即用(或本机)的解释。
所以我想知道如何有效地使用 JSON 编码和解码 BLOB 数据。
编辑 1:添加示例。
我在 MySQL 数据库上有一个名为“some_text”的 TEXT 类型字段。以下是其内容: “这是 some_text 字段内容”。
当 SQLJocky 返回 some_text 时,它以“Blob”的形式存储在 Dart 中的 var 上。一个简单的“returnVar.runtimeType”即可确认。
所以现在我需要将此 Blob 文本“转换”为普通字符串,因为 JSON.encode/decode 不适用于第一个。
【问题讨论】:
-
JSON 没有“纯二进制”数据的数据类型。如果您想将任意 blob 数据放入 JSON 流中,您需要使用 Base64 或类似的方法对其进行转换。
-
import 'package:crypto/crypto.dart';CryptoUtils.bytesToBase64(bytes);,CryptoUtils.base64StringToBytes(input);如果您需要更多支持,您应该添加数据的确切 Dart 数据类型BLOB SQL type不是很具体。 -
Günter,该字段在 MySQL 数据库中设置为 TEXT。它来自 sqljocky,就像 Blob 一样(.runTimeType 这么说)。
-
那么你的数据是什么样子的?
-
@Robert,这次我在该字段上处理一个简单的文本(实际上它包含 HTML 标记,如
、
- 等)。但我试图了解 BLOB 是如何工作的,以便将来能够使用它保存文件(如图像文件)。