6

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

4

2 回答 2

2

在荒野中,您可以使用TypeConverter. 将任何类型转换为受支持的停泊柱类型。例如,您可以将 json 字符串化并将其存储在 TextColumn 中。有关如何操作的信息,请参阅文档。但是对于深度嵌套的 json 数据,编码和解码可能会有点棘手。

于 2019-08-23T11:45:43.603 回答
1

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

在此处输入图像描述

于 2019-07-29T19:02:36.853 回答