在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;
}