如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中
Posted
技术标签:
【中文标题】如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中【英文标题】:How to store JSON data into database table in flutter using SQFLite or Moor Library 【发布时间】:2019-11-30 05:16:09 【问题描述】:如何在flutter应用程序中插入数据库中的字符串列表,我尝试通过将json数组编码到字符串中来将其保存为字符串数据类型,但是技能数组每次都需要显式解码,如下所示每当我需要从数据库返回对象。
List<User> userResponse = await tempDatabase.allItems;
jsonData = Result.fromJson(
"name": userResponse[0].name,
"skills": jsonDecode(userResponse[0].skills)
);
这是我的 json 响应
"result": [
"name":"Sidhant Rajora",
"skills": [
"C++",
"Java",
"Python",
"React"
]
,
"name":"Adity Rajora",
"skills": [
"C++",
"Java",
"Python"
]
]
我有这种JSON响应,它创建的模型PODO就像
class UsersJson
List<Result> result;
UsersJson(this.result);
UsersJson.fromJson(Map<String, dynamic> json)
if (json['result'] != null)
result = new List<Result>();
json['result'].forEach((v)
result.add(new Result.fromJson(v));
);
Map<String, dynamic> toJson()
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.result != null)
data['result'] = this.result.map((v) => v.toJson()).toList();
return data;
class Result
String name;
int id;
List<String> skills;
Result(this.name, this.skills);
Result.fromJson(Map<String, dynamic> json)
name = json['name'];
skills = json['skills'].cast<String>();
Map<String, dynamic> toJson()
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['skills'] = this.skills;
return data;
现在我不确定将模型插入数据库并从数据库中取回的方法。 我尝试过使用 SQFLite 库和 Moor 库(https://moor.simonbinder.eu)
【问题讨论】:
你解决了吗? 目前我选择了无 sql 数据库。 @SidhantRajora:我可以知道你在 Flutter 中使用的是哪个 NoSQL 数据库吗? sembast pub.dev/packages/sembast 您能分享一下您是如何解决这个问题的吗? 【参考方案1】:在 moor 中,您可以使用 TypeConverter
。将任何类型转换为受支持的停泊柱类型。例如,您可以将 json 字符串化并将其存储在 TextColumn 中。 See the docs for how to。但是对于深度嵌套的 json 数据,编码和解码可能会有点棘手。
【讨论】:
我有TypeConverter
的概念并按照教程进行操作,但我无法存储和检索数据,即我无法为其编写查询。你能帮忙吗?【参考方案2】:
我在学习 Flutter、SQLite、Moor 等时遇到了类似的问题。我能看到对我有用的唯一解决方案是加入两个单独的表,一个表包含名称和 ID,另一个包含两种 ID,每个技能一个唯一标识符,一个链接一堆的“分组”ID其中的第一张桌子。因此,对于您的情况,它应该是这样的:
【讨论】:
我很了解连接和外键,但是我要存储的数据是 json 格式,并且具有复杂的结构,包含嵌套对象和数组,在这种情况下创建表并且记录插入和获取会更难。以上是关于如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中的主要内容,如果未能解决你的问题,请参考以下文章
如何在flutter中将图像数据保存到sqflite数据库以进行持久化
如何通过 Node JS 使用自己的库将联系人添加到 Mailchimp 中的列表/受众