json - 如何使用 SQFLite 或 Moor 库将 JSON 数据存储到 flutter 中的数据库表中

标签 json flutter dart sqflite

如何在 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)

最佳答案

在荒野中你可以使用TypeConverter。将任何类型转换为支持的系泊柱类型。例如,您可以将 json 字符串化并将其存储在 TextColumn 中。 See the docs for how to .但是对于深度嵌套的 json 数据,编码和解码可能会有点棘手。

关于json - 如何使用 SQFLite 或 Moor 库将 JSON 数据存储到 flutter 中的数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142463/

相关文章:

dart - 如何更改 InkResponse 小部件中的 highlightShape 大小

Flutter 构建函数返回 null

ruby-on-rails - Ruby on Rails 不兼容库

c# - 让 NodaTime.Serialization.JsonNet 使用自定义日期格式

php - 以 json 格式传递数据时出现无效属性 ID 错误

java - RestEasy - 无法找到 MessageBodyReader?

flutter - FlatButton子级不在按钮内部居中

flutter - 在flutter中添加位置插件时出错?

docker - Flutter:Visual Studio模拟器

dart - 如何将多个 Stream 合并为更高级别的 Stream?