【问题标题】:flutter - handling json data颤振 - 处理 json 数据
【发布时间】:2020-04-20 13:44:34
【问题描述】:

在处理我的应用数据方面需要您的帮助。我已经对我的问题进行了很多研究,但还没有找到有效的答案...

这是我的问题: 我希望我的应用程序显示人骨。我要显示的数据存储在 JSON 文件中(它不是整个 json 文件,因为它只是一遍又一遍地重复。括号不是错误):

{

"bones": 
    [
    {
        "id": "1",
        "name": "Humerus",
        "image": "assets/images/...",
        "locations": [
            {
            "location1": [
                {
                "id": "11",
                "title": "proximal",
                "image": "assets/images/...",
                "subcategory1": [
                    {
                    "id": "11A",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "11A1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11A1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11A1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11A1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11A2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11A2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11A2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11A2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11A3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11A3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11A3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11A3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }],
                "subcategory2": [{
                    "id": "11B",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "11B1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11B1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11B1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11B1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11B2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11B2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11B2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11B2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11B3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11B3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11B3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11B3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }],
                "subcategory3": [{
                    "id": "11C",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "11C1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11C1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11C1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11C1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11C2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11C2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11C2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11C2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "11C3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11C3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "11C3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "11C3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }]

            }],
            "location2": [
                {
                "id": "12",
                "title": "diaphysär",
                "image": "assets/images/...",
                "subcategory1": [{
                    "id": "12A",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "12A1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12A1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12A1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12A1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12A2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11A2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12A2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12A2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12A3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12A3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12A3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12A3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }],
                "subcategory2": [{
                    "id": "12B",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "12B1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12B1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12B1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12B1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12B2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12B2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12B2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12B2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12B3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12B3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12B3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12B3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }],
                "subcategory3": [{
                    "id": "12C",
                    "title": "extraartikulär 2-Segment unifokal",
                    "image": "assets/images/...",
                    "subsubcategory1": [{
                        "id": "12C1",
                        "title": "Abriß des Tuberculum majus",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "12C1.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12C1.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12C1.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory2": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12C2",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11C2.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12C2.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12C2.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }],
                    "subsubcategory3": [{
                        "title": "Abriß des Tuberculum majus",
                        "id": "12C3",
                        "image": "assets/images/...",
                        "final_item1": {
                            "id": "11C3.1",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item2": {
                            "id": "12C3.2",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        },
                        "final_item3": {
                            "id": "12C3.3",
                            "title": "Tuberculum majus ohne Dislokation",
                            "image": "assets/images/...",
                            "model": "assets/images/..."
                        }
                    }]
                }]

            }]

        }]
    }
]}

有 3 个地点,每个地点有 3 个子类别,每个 3 个子子类别,每 3 个最终项目。

目前我只是试图在控制台中打印骨骼的名称。我有这些课程:

class Bone {
  final String id;
  final String name;
  final String imageUrl;
  final List<Locations> locations;

  Bone({this.id, this.imageUrl, this.name, this.locations});
  factory Bone.fromJson(Map<String, dynamic> json){
    return Bone(
    id: json['id'],
    name: json['name'],
    imageUrl: json['image'],
    locations: json['locations']
    );
  }
}

class Locations{
  final List<Location> location;

  Locations(this.location);
}

class Location{
  final String id;
  final String title;
  final String imageUrl;
  final List<Subcategory> subcategory;

  Location({this.id, this.title, this.imageUrl, this.subcategory});
}

class Subcategory{
  final String id;
  final String title;
  final String imageUrl;
  final List<Subsubcategory> subsubcategory;

  Subcategory({this.id, this.title, this.imageUrl, this.subsubcategory});
}

class Subsubcategory{
  final String id;
  final String title;
  final String imageUrl;
  final FinalItem finalItem;

  Subsubcategory({this.id, this.title, this.imageUrl, this.finalItem});
}

class FinalItem{
  final String id;
  final String title;
  final String imageUrl;

  FinalItem({this.id, this.title, this.imageUrl});
}

还有这个测试画面:

import 'dart:convert';
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../models/bone.dart';

class TestScreen extends StatefulWidget {

  static const routeName = '/test';

  @override
  _TestScreenState createState() => _TestScreenState();
}

class _TestScreenState extends State<TestScreen> {


  Future<String> loadDataFromAssets() async {
    return await rootBundle.loadString('assets/api/data.json');
  }

  Future loadData() async {
    String jsonString = await loadDataFromAssets();
    final jsonResponse = json.decode(jsonString);
    Bone bone = Bone.fromJson(jsonResponse);
    print('Name ${bone.name}');
  }

  @override
  void initState() {
    super.initState();
    loadData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("test")),

    );
  }
}

在我的调试控制台中抛出此错误:

E/flutter (7644): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:“List”类型不是“List”类型的子类型

提前谢谢你:)

https://pastebin.com/utpKhnYx

【问题讨论】:

    标签: json flutter


    【解决方案1】:

    型号:

    class Bone {
      List<Bones> bones;
    
      Bone({this.bones});
    
      Bone.fromJson(Map<String, dynamic> json) {
        if (json['bones'] != null) {
          bones = new List<Bones>();
          json['bones'].forEach((v) {
            bones.add(new Bones.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        if (this.bones != null) {
          data['bones'] = this.bones.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Bones {
      String id;
      String name;
      String image;
      List<Locations> locations;
    
      Bones({this.id, this.name, this.image, this.locations});
    
      Bones.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        name = json['name'];
        image = json['image'];
        if (json['locations'] != null) {
          locations = new List<Locations>();
          json['locations'].forEach((v) {
            locations.add(new Locations.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['name'] = this.name;
        data['image'] = this.image;
        if (this.locations != null) {
          data['locations'] = this.locations.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Locations {
      List<Location> location1;
      List<Location> location2;
      List<Location> location3;
    
      Locations({this.location1, this.location2, this.location3});
    
      Locations.fromJson(Map<String, dynamic> json) {
        if (json['location1'] != null) {
          location1 = new List<Location>();
          json['location1'].forEach((v) {
            location1.add(new Location.fromJson(v));
          });
        }
        if (json['location2'] != null) {
          location2 = new List<Location>();
          json['location2'].forEach((v) {
            location2.add(new Location.fromJson(v));
          });
        }
        if (json['location3'] != null) {
          location3 = new List<Location>();
          json['location3'].forEach((v) {
            location3.add(new Location.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        if (this.location1 != null) {
          data['location1'] = this.location1.map((v) => v.toJson()).toList();
        }
        if (this.location2 != null) {
          data['location2'] = this.location2.map((v) => v.toJson()).toList();
        }
        if (this.location3 != null) {
          data['location3'] = this.location3.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Location {
      String id;
      String title;
      String image;
      List<Subcategory> subcategory1;
      List<Subcategory> subcategory2;
      List<Subcategory> subcategory3;
    
      Location(
          {this.id,
            this.title,
            this.image,
            this.subcategory1,
            this.subcategory2,
            this.subcategory3});
    
      Location.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        title = json['title'];
        image = json['image'];
        if (json['subcategory1'] != null) {
          subcategory1 = new List<Subcategory>();
          json['subcategory1'].forEach((v) {
            subcategory1.add(new Subcategory.fromJson(v));
          });
        }
        if (json['subcategory2'] != null) {
          subcategory2 = new List<Subcategory>();
          json['subcategory2'].forEach((v) {
            subcategory2.add(new Subcategory.fromJson(v));
          });
        }
        if (json['subcategory3'] != null) {
          subcategory3 = new List<Subcategory>();
          json['subcategory3'].forEach((v) {
            subcategory3.add(new Subcategory.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['title'] = this.title;
        data['image'] = this.image;
        if (this.subcategory1 != null) {
          data['subcategory1'] = this.subcategory1.map((v) => v.toJson()).toList();
        }
        if (this.subcategory2 != null) {
          data['subcategory2'] = this.subcategory2.map((v) => v.toJson()).toList();
        }
        if (this.subcategory3 != null) {
          data['subcategory3'] = this.subcategory3.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Subcategory {
      String id;
      String title;
      String image;
      List<Subsubcategory> subsubcategory1;
      List<Subsubcategory> subsubcategory2;
      List<Subsubcategory> subsubcategory3;
    
      Subcategory(
          {this.id,
            this.title,
            this.image,
            this.subsubcategory1,
            this.subsubcategory2,
            this.subsubcategory3});
    
      Subcategory.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        title = json['title'];
        image = json['image'];
        if (json['subsubcategory1'] != null) {
          subsubcategory1 = new List<Subsubcategory>();
          json['subsubcategory1'].forEach((v) {
            subsubcategory1.add(new Subsubcategory.fromJson(v));
          });
        }
        if (json['subsubcategory2'] != null) {
          subsubcategory2 = new List<Subsubcategory>();
          json['subsubcategory2'].forEach((v) {
            subsubcategory2.add(new Subsubcategory.fromJson(v));
          });
        }
        if (json['subsubcategory3'] != null) {
          subsubcategory3 = new List<Subsubcategory>();
          json['subsubcategory3'].forEach((v) {
            subsubcategory3.add(new Subsubcategory.fromJson(v));
          });
        }
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['title'] = this.title;
        data['image'] = this.image;
        if (this.subsubcategory1 != null) {
          data['subsubcategory1'] =
              this.subsubcategory1.map((v) => v.toJson()).toList();
        }
        if (this.subsubcategory2 != null) {
          data['subsubcategory2'] =
              this.subsubcategory2.map((v) => v.toJson()).toList();
        }
        if (this.subsubcategory3 != null) {
          data['subsubcategory3'] =
              this.subsubcategory3.map((v) => v.toJson()).toList();
        }
        return data;
      }
    }
    
    class Subsubcategory {
      String id;
      String title;
      String image;
      FinalItem1 finalItem1;
      FinalItem1 finalItem2;
      FinalItem1 finalItem3;
    
      Subsubcategory(
          {this.id,
            this.title,
            this.image,
            this.finalItem1,
            this.finalItem2,
            this.finalItem3});
    
      Subsubcategory.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        title = json['title'];
        image = json['image'];
        finalItem1 = json['final_item1'] != null
            ? new FinalItem1.fromJson(json['final_item1'])
            : null;
        finalItem2 = json['final_item2'] != null
            ? new FinalItem1.fromJson(json['final_item2'])
            : null;
        finalItem3 = json['final_item3'] != null
            ? new FinalItem1.fromJson(json['final_item3'])
            : null;
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['title'] = this.title;
        data['image'] = this.image;
        if (this.finalItem1 != null) {
          data['final_item1'] = this.finalItem1.toJson();
        }
        if (this.finalItem2 != null) {
          data['final_item2'] = this.finalItem2.toJson();
        }
        if (this.finalItem3 != null) {
          data['final_item3'] = this.finalItem3.toJson();
        }
        return data;
      }
    }
    
    class FinalItem1 {
      String id;
      String title;
      String image;
      String model;
    
      FinalItem1({this.id, this.title, this.image, this.model});
    
      FinalItem1.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        title = json['title'];
        image = json['image'];
        model = json['model'];
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['title'] = this.title;
        data['image'] = this.image;
        data['model'] = this.model;
        return data;
      }
    }
    

    测试屏幕:

    class TestScreen extends StatefulWidget {
    
      static const routeName = '/test';
    
      @override
      _TestScreenState createState() => _TestScreenState();
    }
    
    class _TestScreenState extends State<TestScreen> {
    
    
      Future<String> loadDataFromAssets() async {
        return await rootBundle.loadString('assets/api/data.json');
      }
    
      Future loadData() async {
        String jsonString = await loadDataFromAssets();
        final jsonResponse = json.decode(jsonString);
        Bone bone = Bone.fromJson(jsonResponse);
        print('Name ${bone.bones[0].name}');
      }
    
      @override
      void initState() {
        super.initState();
        loadData();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text("test")),
    
        );
      }
    }
    

    【讨论】:

    • 不幸的是,这不起作用。 '我/颤动(7644):名称:空'
    • 我还收到了编译器消息:lib/models/bone.dart:13:66:错误:找不到方法:'Locations.fromJson'。位置: (json['locations'] as List)?.map((i) => Locations.fromJson(i))?.toList()
    • 您的模型不正确。请为您的所有模型添加 fromJson 方法。它将修复它。
    • 你可以共享一个json对象,我会生成模型给你理解。
    • 我从 json 方法添加到每个类,但它仍然返回 null -.- 这很好,但我不明白你的意思
    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 2020-11-09
    • 2020-12-05
    • 2022-01-05
    • 2019-11-27
    • 2021-03-17
    • 2022-01-05
    • 2021-03-26
    相关资源
    最近更新 更多