如何使用 SQFLite 或 Moor 库将 JSON 数据存储到颤振中的数据库表中

Sid*_*ora 6 json dart flutter sqflite

如何在 flutter 应用程序的数据库中插入字符串列表,我尝试通过将 json 数组编码为字符串将其保存为字符串数据类型,但随后技能数组每次都需要显式解码,如下所示,每当我需要返回对象时数据库。

List<User> userResponse = await tempDatabase.allItems;
      jsonData = Result.fromJson({
        "name": userResponse[0].name,
        "skills": jsonDecode(userResponse[0].skills)
      });
Run Code Online (Sandbox Code Playgroud)

这是我的 json 响应

{
  "result": [
    {
      "name":"Sidhant Rajora",
      "skills": [
        "C++",
        "Java",
        "Python",
        "React"
      ]
    },
    {
      "name":"Adity Rajora",
      "skills": [
        "C++",
        "Java",
        "Python"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我有这种 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我不确定我应该采取什么方法将模型插入数据库并从数据库中取回它。我曾尝试使用 SQFLite 库以及 Moor 库(https://moor.simonbinder.eu

小智 1

我在学习 Flutter、SQLite、Moor 等时遇到了类似的问题。我认为对我有用的唯一解决方案是连接两个单独的表,一个表包含名称和ID,另一个表包含两种ID,每个技能都有一个唯一标识符,以及一个链接一堆的“分组”ID他们到第一张桌子。所以对于你的情况应该是这样的:

在此输入图像描述