flutter sqlite查询将null列转换为null字符串



在sqlite表中,我有空列。我进行了一个查询,以获取特定列的所有数据,并将其数据映射到List<Map<String, dynamic>>:

List<Map<String, dynamic>> maps = List();
final db = await database;
var result = await db.query('tools_table', where: 'LifeCycle <> 2');
result.forEach((val) {
maps.add(val);
});

但null列转换为"null",当我想将映射列表反序列化为对象时:

ToolsModel.fromJson(Map<String, dynamic> json) {
...
if (json['triggerImagesUrl'] != null) {
triggerImagesUrl = List<String>();
var job = jsonDecode(json['triggerImagesUrl']);
job.forEach((v) {
triggerImagesUrl.add(v);
});
}

我收到错误,因为json['TriggerUrl']是nut-null,它是"null",var job = jsonDecode(json['TriggerUrl']);作业是null,job.forEach导致e异常。

为什么null列被转换为"null",我如何防止这种操作?

在飞镖垫中试试这个

import 'dart:convert';
void main() {
List<String> urls = null;
var d = jsonEncode(urls);
print(d  is String);
print(jsonDecode(d) is String);
}

您将获得以下输出

true
false

因此,如果urls为空,则jsonEncode(urls)返回null字符串
更改此

Map<String, Object> mapToCacheActivatedToolItem(LogData.Data item) {
var newMap = {
"TriggerImagesUrl": item.triggerImagesUrl == null ? null : jsonEncode(urls)
};
return newMap;
}

最新更新