json Flutter阵列目标建模

z9smfwbn  于 2023-10-21  发布在  Flutter
关注(0)|答案(1)|浏览(128)

我尝试使我的设计表的模型数组看起来像这样。但我不知道该怎么做。

我引用了下面的json数组link,但它给予错误The json provider has syntax errors

{
  "serialNumber": "",
  "anObj": {
    "a1": "",
    "a2": "",
    "a3": "",
    "a4": "",
    "a5": "",
    "a6": "",
    "a7": "",
    "a8": "",
    "b1": "",
    "b2": "",
    "b3": "",
    "b4": "",
    "b5": "",
    "b6": "",
    "b7": "",
    "b8": "",
    "c1": "",
    "c2": "",
    "c3": "",
    "c4": "",
    "c5": "",
    "c6": "",
    "c7": "",
    "c8": "",
    "d1": "",
    "d2": "",
    "d3": "",
    "d4": "",
    "d5": "",
    "d6": "",
    "d7": "",
    "d8": "",
  },
8dtrkrch

8dtrkrch1#

JSON数据

1.您提供的json数据存在问题:

  • 你忘了在最后加个支撑
  • 结尾不应该有逗号

你的json应该看起来像这样:

{
  "serialNumber": "",
  "anObj": {
    "a1": "",
    "a2": "",
    "a3": "",
    "a4": ""
  }
}

1.我建议用另一种方式表示数据,没有必要把行和列名(a1,a2,...),可以从代码中生成。
您可以在矩阵中表示表格:

List matrix = [
 ["", ""],
 ["", ""],
];

因为你还需要一个序列号,一个json对象可能看起来像这样:

{
  "serialNumber": "",
  "table": [
    ["", "", ""],
    ["", "", ""],
    ["", "", ""]
  ]
}

我看到可能有很多数据,所以你可以把它放在一个数组中,json最终会是:

[
    {
      "serialNumber": "",
      "table": [
        ["", "", ""],
        ["", "", ""],
        ["", "", ""]
      ]
    },
    {
      "serialNumber": "",
      "table": [
        ["", "", ""],
        ["", "", ""],
        ["", "", ""]
      ]
    }
]

dart对象

下面是用Flutter表示数据的类,它有一个从json获取数据的方法

class MyObject {

  String serialNumber;
  List table;

  MyObject(this.serialNumber, this.table);

  // get from json
  MyObject.fromJson(Map<String, dynamic> json)
      : serialNumber = json['serialNumber'],
        table = json['table'];

}

解析数据

假设您在名为 * assets/data.json * 的资产文件中有JSON数据,下面是如何将数据解析为对象的方法

List<MyObject> objects = [];
// get objects from json asset
String asset = 'assets/data.json';
String data = await DefaultAssetBundle.of(context).loadString(asset);
List<dynamic> list = jsonDecode(data);
for (Map<String, dynamic> map in list) {
  MyObject object = MyObject.fromJson(map);
  objects.add(object);
  print('${object.serialNumber} - ${object.table}');
}

相关问题