flutter 如何将json对象转换为列表,以便在listview.builder中显示

dly7yett  于 2022-12-14  发布在  Flutter
关注(0)|答案(2)|浏览(128)

这里我遇到了一个问题,因此我得到了一个对象形式的json,在该对象中,我必须以列表的形式显示数据,我的问题在这里有点困难,因为数据是对象形式的,但如果数据是数组/列表的形式,我可以在列表视图中显示它,但这里的json数据是对象的形式。这里有人遇到过类似的情况吗?并有例子供我学习谢谢,祝你有美好的一天

{
    "status": "success",
    "code": "200",
    "data": {
        "1": {
            "id": "a1928aaf-e8d2-407c-b10d-7d368c71905f",
            "id_dosen": "5eb3804c-ff71-449c-bbdf-8d89005734f3",
            "id_mk": "a17ea90a-4e92-4bb2-bfe4-3efcfe90d190",
            "nidn": null,
            "dosen": "Yanyan Suryana ",
            "id_kelas_kuliah": "9b29eaea-0dbe-4eb7-885d-4b1016e2026d",
            "kelas_kuliah": "KPAM I (Chr. Build) - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 1,
            "jumlah_kelas": 0,
            "matakuliah": "KPAM I (Chr. Build) ( KPAM I (Chr. Build) ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 1,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:11:12",
            "updated_at": "2022-09-06 07:11:12",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "2": {
            "id": "708c82bc-1fe5-4529-8c3d-2522c48fee23",
            "id_dosen": "64592de2-743e-4d38-9d74-6f83776b2382",
            "id_mk": "61289350-447b-40cc-86c6-27d806b932a7",
            "nidn": null,
            "dosen": "Putri Zafira Ruhliandini",
            "id_kelas_kuliah": "52aa6c84-5d07-4deb-8122-60d3465bf10c",
            "kelas_kuliah": "Lembaga Keuangan Bank & Non Bank - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Lembaga Keuangan Bank & Non Bank ( Bank & Non-Bank Financial Institutions ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "EVALUASI AKADEMIK",
            "created_at": "2022-09-06 07:16:52",
            "updated_at": "2022-09-06 07:16:52",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "3": {
            "id": "6c2cdc1f-f87f-4ca2-9e6c-d56c01172fe1",
            "id_dosen": "d6aedfb6-cf88-4e89-8365-0f206822a6c4",
            "id_mk": "0deb6dda-dfe8-4a3e-a1b6-39bbb82874ad",
            "nidn": null,
            "dosen": "Yudhy",
            "id_kelas_kuliah": "a0f8d5ab-13e7-402c-a104-fde9746b8929",
            "kelas_kuliah": "Sejarah Ekonomi & Perbankan Islam - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 3,
            "jumlah_kelas": 0,
            "matakuliah": "Sejarah Ekonomi & Perbankan Islam ( History of Islamic Economics & Banking ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 3,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "EVALUASI AKADEMIK",
            "created_at": "2022-09-06 07:23:42",
            "updated_at": "2022-09-06 07:23:42",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "4": {
            "id": "910a51a7-926a-40df-ae6c-84508487170c",
            "id_dosen": "40b65274-81ab-4144-ae18-795da53554df",
            "id_mk": "0965b6b8-abc8-4188-a785-f6e56e7437ca",
            "nidn": null,
            "dosen": "Yasir M. Fauzi",
            "id_kelas_kuliah": "e9cac682-ac66-43d4-a664-c82b45f5a97a",
            "kelas_kuliah": "Hadits Ekonomi - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Hadits Ekonomi ( Economic Hadith ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "EVALUASI AKADEMIK",
            "created_at": "2022-09-06 07:39:48",
            "updated_at": "2022-09-06 07:39:48",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "5": {
            "id": "e5ddedfc-3f26-4b9e-a5b6-a880a2255139",
            "id_dosen": "42603f53-01b5-4469-ac40-771f23184a01",
            "id_mk": "96712436-0f5e-4f94-8deb-a933b8cf1916",
            "nidn": null,
            "dosen": "Ade Iskandar Nasution",
            "id_kelas_kuliah": "25ea99bd-a7ac-4db6-ad4c-2e247dbe4ae1",
            "kelas_kuliah": "Bahasa Inggris 1 (For Banking) - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Bahasa Inggris 1 (For Banking) ( English 1 (For Banking) ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:42:35",
            "updated_at": "2022-09-06 07:42:35",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "6": {
            "id": "2492b7a4-962e-4167-9d63-d72d1d2d47a3",
            "id_dosen": "feeaecb5-d7ff-45c1-b741-234cf9d99c83",
            "id_mk": "f7f7851d-bce6-49c6-8228-3fe54c6911f3",
            "nidn": null,
            "dosen": "Faisal Rakhman",
            "id_kelas_kuliah": "1fe74679-b9cd-4ab2-a753-1c98212ec7c0",
            "kelas_kuliah": "Dasar Akuntansi 1 - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 3,
            "jumlah_kelas": 0,
            "matakuliah": "Dasar Akuntansi 1 ( Basic Accounting 1 ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 3,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:45:48",
            "updated_at": "2022-09-06 07:45:48",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "7": {
            "id": "1bb2ff62-df42-4995-92c1-667e0c0d29c9",
            "id_dosen": "0e694ee7-04d0-4a3b-abe0-a21d36d62e7c",
            "id_mk": "85a4c5b9-085b-44c9-ae42-abd185e11f01",
            "nidn": null,
            "dosen": "Kanda M Ishak",
            "id_kelas_kuliah": "ca6c78a4-61eb-4f6e-acb7-482fd2200c12",
            "kelas_kuliah": "Aplikasi Komputer I (Ms. Word & Excel) - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Aplikasi Komputer I (Ms. Word & Excel) ( Computer Application I (Ms. Word & Excel) ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:48:56",
            "updated_at": "2022-09-06 07:48:56",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "8": {
            "id": "64ffa430-5301-4fa0-9449-c3e2f85a71e7",
            "id_dosen": "c4b5bb76-8eea-4f8a-802e-bc500753a912",
            "id_mk": "b153397d-eb8e-4b1f-9730-4249ef19f8cd",
            "nidn": null,
            "dosen": "Mimin Mintarsih",
            "id_kelas_kuliah": "9066d7fd-432d-4ada-a6f0-3e1c677536ed",
            "kelas_kuliah": "Ulumul Qur'an dan Hadits - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Ulumul Qur'an dan Hadits ( Ulumul Qur'an and Hadith ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:51:55",
            "updated_at": "2022-09-06 07:51:55",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "9": {
            "id": "f554093f-f86b-4489-8f17-3785c1a5c60a",
            "id_dosen": "40b65274-81ab-4144-ae18-795da53554df",
            "id_mk": "2a90cc9b-e8a6-4b7d-b293-794ce71f8855",
            "nidn": null,
            "dosen": "Yasir M. Fauzi",
            "id_kelas_kuliah": "be9a777d-af6b-4b90-983d-cd858382862c",
            "kelas_kuliah": "Studi Islam I (Fiqih Ibadah) - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Studi Islam I (Fiqih Ibadah) ( Islamic Studies I (Fiqh Worship) ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 07:59:35",
            "updated_at": "2022-09-06 07:59:35",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        },
        "10": {
            "id": "8f804988-9d50-4499-b01b-6de90fcd95f4",
            "id_dosen": "43cda764-1dbb-47cc-adac-fe3663c987fe",
            "id_mk": "2286f1cd-242f-4e27-9428-63d1d993a479",
            "nidn": null,
            "dosen": "Bahmid I. Magi",
            "id_kelas_kuliah": "70903e13-f12c-41fc-b74e-5125c120afd4",
            "kelas_kuliah": "Pendidikan Kewarganegaraan - Perbankan Syariah - A",
            "prodi": "Perbankan Syariah",
            "kelas": "REGULER",
            "semester": "1",
            "kelompok_kelas": "A",
            "kode": null,
            "sks": 2,
            "jumlah_kelas": 0,
            "matakuliah": "Pendidikan Kewarganegaraan ( Civic education ) - A",
            "smt": "2022-2023 GANJIL",
            "bobot_sks": 2,
            "rencana_pertemuan": 16,
            "jenis_evaluasi": "KOGNITIF/PENGETAHUAN",
            "created_at": "2022-09-06 08:14:18",
            "updated_at": "2022-09-06 08:14:18",
            "created_by": "Dasep",
            "updated_by": "Dasep"
        }
    }
}

将所请求的结果写入列表/卡x1c 0d1x的示例

lf3rwulv

lf3rwulv1#

使用Quicktype.io像这样转换json

// To parse this JSON data, do
//
//     final test = testFromMap(jsonString);

import 'dart:convert';

Test testFromMap(String str) => Test.fromMap(json.decode(str));

String testToMap(Test data) => json.encode(data.toMap());

class Test {
    Test({
        this.status,
        this.code,
        this.data,
    });

    String status;
    String code;
    Data data;

    factory Test.fromMap(Map<String, dynamic> json) => Test(
        status: json["status"],
        code: json["code"],
        data: Data.fromMap(json["data"]),
    );

    Map<String, dynamic> toMap() => {
        "status": status,
        "code": code,
        "data": data.toMap(),
    };
}

class Data {
    Data({
        this.the1,
    });

    The1 the1;

    factory Data.fromMap(Map<String, dynamic> json) => Data(
        the1: The1.fromMap(json["1"]),
    );

    Map<String, dynamic> toMap() => {
        "1": the1.toMap(),
    };
}

class The1 {
    The1({
        this.id,
        this.idDosen,
        this.idMk,
        this.nidn,
        this.dosen,
        this.idKelasKuliah,
        this.kelasKuliah,
        this.prodi,
        this.kelas,
        this.semester,
        this.kelompokKelas,
        this.kode,
        this.sks,
        this.jumlahKelas,
        this.matakuliah,
        this.smt,
        this.bobotSks,
        this.rencanaPertemuan,
        this.jenisEvaluasi,
        this.createdAt,
        this.updatedAt,
        this.createdBy,
        this.updatedBy,
    });

    String id;
    String idDosen;
    String idMk;
    dynamic nidn;
    String dosen;
    String idKelasKuliah;
    String kelasKuliah;
    String prodi;
    String kelas;
    String semester;
    String kelompokKelas;
    dynamic kode;
    int sks;
    int jumlahKelas;
    String matakuliah;
    String smt;
    int bobotSks;
    int rencanaPertemuan;
    String jenisEvaluasi;
    DateTime createdAt;
    DateTime updatedAt;
    String createdBy;
    String updatedBy;

    factory The1.fromMap(Map<String, dynamic> json) => The1(
        id: json["id"],
        idDosen: json["id_dosen"],
        idMk: json["id_mk"],
        nidn: json["nidn"],
        dosen: json["dosen"],
        idKelasKuliah: json["id_kelas_kuliah"],
        kelasKuliah: json["kelas_kuliah"],
        prodi: json["prodi"],
        kelas: json["kelas"],
        semester: json["semester"],
        kelompokKelas: json["kelompok_kelas"],
        kode: json["kode"],
        sks: json["sks"],
        jumlahKelas: json["jumlah_kelas"],
        matakuliah: json["matakuliah"],
        smt: json["smt"],
        bobotSks: json["bobot_sks"],
        rencanaPertemuan: json["rencana_pertemuan"],
        jenisEvaluasi: json["jenis_evaluasi"],
        createdAt: DateTime.parse(json["created_at"]),
        updatedAt: DateTime.parse(json["updated_at"]),
        createdBy: json["created_by"],
        updatedBy: json["updated_by"],
    );

    Map<String, dynamic> toMap() => {
        "id": id,
        "id_dosen": idDosen,
        "id_mk": idMk,
        "nidn": nidn,
        "dosen": dosen,
        "id_kelas_kuliah": idKelasKuliah,
        "kelas_kuliah": kelasKuliah,
        "prodi": prodi,
        "kelas": kelas,
        "semester": semester,
        "kelompok_kelas": kelompokKelas,
        "kode": kode,
        "sks": sks,
        "jumlah_kelas": jumlahKelas,
        "matakuliah": matakuliah,
        "smt": smt,
        "bobot_sks": bobotSks,
        "rencana_pertemuan": rencanaPertemuan,
        "jenis_evaluasi": jenisEvaluasi,
        "created_at": createdAt.toIso8601String(),
        "updated_at": updatedAt.toIso8601String(),
        "created_by": createdBy,
        "updated_by": updatedBy,
    };
}

之后,当您调用API时,需要解析对该对象的json响应
我假设您使用的是未来的构建器,然后像这样使用

Container(
        child: FutureBuilder(
            future: getJsonData(),/your API call
            builder: (context, AsyncSnapshot<dynamic> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data[0].time);
              } else {
                return CircularProgressIndicator();
              }
            }),
      ),
2ul0zpep

2ul0zpep2#

另一种方法是使用jsonPath

import 'dart:convert';

import 'package:json_path/json_path.dart';

void main() {
  final json = jsonDecode('''
{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}  
  ''');

  final prices = JsonPath(r'$..price');

  print('All prices in the store:');

  /// The following code will print:
  ///
  /// $['store']['book'][0]['price']:   8.95
  /// $['store']['book'][1]['price']:   12.99
  /// $['store']['book'][2]['price']:   8.99
  /// $['store']['book'][3]['price']:   22.99
  /// $['store']['bicycle']['price']:   19.95
  prices
      .read(json)
      .map((match) => '${match.path}:\t${match.value}')
      .forEach(print);
}```

相关问题