Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在flatter中解析复杂的JSON_Json_Flutter_Dart - Fatal编程技术网

如何在flatter中解析复杂的JSON

如何在flatter中解析复杂的JSON,json,flutter,dart,Json,Flutter,Dart,我想在Flatter中解析一个复杂的JSON,我尝试了很多方法,但我不清楚事情的发生方式。有人能解释一下我是如何处理这种情况的吗: { "message": { "header": { "status_code": 200, "execute_time": 0.021989107131958 }, "body": { "tr

我想在Flatter中解析一个复杂的JSON,我尝试了很多方法,但我不清楚事情的发生方式。有人能解释一下我是如何处理这种情况的吗:

{
  "message": {
    "header": {
      "status_code": 200,
      "execute_time": 0.021989107131958
    },
    "body": {
      "track_list": [
        {
          "track": {
            "track_id": 200357565,
            "track_name": "The Climb Back",
            "track_name_translation_list": [],
            "track_rating": 99,
            "commontrack_id": 113835591,
            "instrumental": 0,
            "explicit": 1,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 20,
            "album_id": 39278073,
            "album_name": "Lewis Street",
            "artist_id": 486280,
            "artist_name": "J. Cole",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/J-Cole\/The-Climb-Back?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/J-Cole\/The-Climb-Back\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-23T14:02:17Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 200187374,
            "track_name": "POPSTAR (feat. Drake)",
            "track_name_translation_list": [],
            "track_rating": 99,
            "commontrack_id": 113684105,
            "instrumental": 0,
            "explicit": 1,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 6,
            "album_id": 39216808,
            "album_name": "POPSTAR (feat. Drake) - Single",
            "artist_id": 24704782,
            "artist_name": "DJ Khaled feat. Drake, Lil Wayne & Rick Ross",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/DJ-Khaled-feat-Drake-Lil-Wayne-Rick-Ross\/POPSTAR-Drake?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/DJ-Khaled-feat-Drake-Lil-Wayne-Rick-Ross\/POPSTAR-Drake\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-17T13:38:30Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 200102123,
            "track_name": "What's Love Got to Do with It",
            "track_name_translation_list": [],
            "track_rating": 99,
            "commontrack_id": 113606423,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 18,
            "album_id": 39186667,
            "album_name": "What's Love Got to Do with It",
            "artist_id": 45989671,
            "artist_name": "Kygo feat. Tina Turner",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Kygo-Tina-Turner\/What-s-Love-Got-to-Do-with-It?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Kygo-Tina-Turner\/What-s-Love-Got-to-Do-with-It\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-23T06:28:49Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 194169151,
            "track_name": "Blinding Lights",
            "track_name_translation_list": [],
            "track_rating": 100,
            "commontrack_id": 104185748,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 5583,
            "album_id": 37216011,
            "album_name": "After Hours",
            "artist_id": 13937035,
            "artist_name": "The Weeknd",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/The-Weeknd-3\/Blinding-Lights?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/The-Weeknd-3\/Blinding-Lights\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-09T11:24:05Z",
            "primary_genres": {
              "music_genre_list": [
                {
                  "music_genre": {
                    "music_genre_id": 7,
                    "music_genre_parent_id": 34,
                    "music_genre_name": "Electronic",
                    "music_genre_name_extended": "Electronic",
                    "music_genre_vanity": "Electronic"
                  }
                }
              ]
            }
          }
        },
        {
          "track": {
            "track_id": 198421234,
            "track_name": "Savage Love (Laxed - Siren Beat)",
            "track_name_translation_list": [],
            "track_rating": 100,
            "commontrack_id": 112136372,
            "instrumental": 0,
            "explicit": 1,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 454,
            "album_id": 38617941,
            "album_name": "Savage Love (Laxed - Siren Beat) - Single",
            "artist_id": 45643815,
            "artist_name": "Jawsh 685 feat. Jason Derulo",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Jawsh-685-Jason-Derulo\/Savage-Love-Laxed-Siren-Beat?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Jawsh-685-Jason-Derulo\/Savage-Love-Laxed-Siren-Beat\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-09T13:06:43Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 189626475,
            "track_name": "Watermelon Sugar",
            "track_name_translation_list": [],
            "track_rating": 100,
            "commontrack_id": 104939195,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 567,
            "album_id": 36101498,
            "album_name": "Fine Line",
            "artist_id": 24505463,
            "artist_name": "Harry Styles",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Harry-Styles\/Watermelon-Sugar-2?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Harry-Styles\/Watermelon-Sugar-2\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2019-12-12T16:57:16Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 192324206,
            "track_name": "One Margarita",
            "track_name_translation_list": [],
            "track_rating": 99,
            "commontrack_id": 107705631,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 62,
            "album_id": 36710192,
            "album_name": "Born Here Live Here Die Here",
            "artist_id": 360257,
            "artist_name": "Luke Bryan",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Luke-Bryan\/One-Margarita?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Luke-Bryan\/One-Margarita\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-03-13T08:54:41Z",
            "primary_genres": {
              "music_genre_list": [
                {
                  "music_genre": {
                    "music_genre_id": 34,
                    "music_genre_parent_id": 0,
                    "music_genre_name": "Music",
                    "music_genre_name_extended": "Music",
                    "music_genre_vanity": "Music"
                  }
                }
              ]
            }
          }
        },
        {
          "track": {
            "track_id": 195445553,
            "track_name": "ROCKSTAR (feat. Roddy Ricch)",
            "track_name_translation_list": [],
            "track_rating": 99,
            "commontrack_id": 109586143,
            "instrumental": 0,
            "explicit": 1,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 1,
            "num_favourite": 687,
            "album_id": 37641727,
            "album_name": "BLAME IT ON BABY",
            "artist_id": 45035319,
            "artist_name": "DaBaby feat. Roddy Ricch",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/DaBaby-Roddy-Ricch\/ROCKSTAR-Roddy-Ricch?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/DaBaby-Roddy-Ricch\/ROCKSTAR-Roddy-Ricch\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-06-22T12:43:00Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 200340862,
            "track_name": "Patience",
            "track_name_translation_list": [],
            "track_rating": 98,
            "commontrack_id": 113824017,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 0,
            "num_favourite": 4,
            "album_id": 39273295,
            "album_name": "Patience",
            "artist_id": 156,
            "artist_name": "Chris Cornell",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Chris-Cornell\/Patience?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Chris-Cornell\/Patience\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-21T20:15:22Z",
            "primary_genres": {
              "music_genre_list": []
            }
          }
        },
        {
          "track": {
            "track_id": 200360270,
            "track_name": "Say Something",
            "track_name_translation_list": [],
            "track_rating": 1,
            "commontrack_id": 113837622,
            "instrumental": 0,
            "explicit": 0,
            "has_lyrics": 1,
            "has_subtitles": 1,
            "has_richsync": 0,
            "num_favourite": 0,
            "album_id": 39278673,
            "album_name": "DISCO (Deluxe)",
            "artist_id": 7712,
            "artist_name": "Kylie Minogue",
            "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Kylie-Minogue\/Say-Something?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Kylie-Minogue\/Say-Something\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
            "restricted": 0,
            "updated_time": "2020-07-23T16:04:00Z",
            "primary_genres": {
              "music_genre_list": [
                {
                  "music_genre": {
                    "music_genre_id": 34,
                    "music_genre_parent_id": 0,
                    "music_genre_name": "Music",
                    "music_genre_name_extended": "Music",
                    "music_genre_vanity": "Music"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}
我曾经得到过这样的东西:

// To parse this JSON data, do
//
//     final jsonToDart = jsonToDartFromMap(jsonString);

import 'dart:convert';

JsonToDart jsonToDartFromMap(String str) => JsonToDart.fromMap(json.decode(str));

String jsonToDartToMap(JsonToDart data) => json.encode(data.toMap());

class JsonToDart {
  JsonToDart({
    this.message,
  });

  Message message;

  factory JsonToDart.fromMap(Map<String, dynamic> json) => JsonToDart(
    message: Message.fromMap(json["message"]),
  );

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

class Message {
  Message({
    this.header,
    this.body,
  });

  Header header;
  Body body;

  factory Message.fromMap(Map<String, dynamic> json) => Message(
    header: Header.fromMap(json["header"]),
    body: Body.fromMap(json["body"]),
  );

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

class Body {
  Body({
    this.trackList,
  });

  List<TrackList> trackList;

  factory Body.fromMap(Map<String, dynamic> json) => Body(
    trackList: List<TrackList>.from(json["track_list"].map((x) => TrackList.fromMap(x))),
  );

  Map<String, dynamic> toMap() => {
    "track_list": List<dynamic>.from(trackList.map((x) => x.toMap())),
  };
}

class TrackList {
  TrackList({
    this.track,
  });

  Track track;

  factory TrackList.fromMap(Map<String, dynamic> json) => TrackList(
    track: Track.fromMap(json["track"]),
  );

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

class Track {
  Track({
    this.trackId,
    this.trackName,
    this.trackNameTranslationList,
    this.trackRating,
    this.commontrackId,
    this.instrumental,
    this.explicit,
    this.hasLyrics,
    this.hasSubtitles,
    this.hasRichsync,
    this.numFavourite,
    this.albumId,
    this.albumName,
    this.artistId,
    this.artistName,
    this.trackShareUrl,
    this.trackEditUrl,
    this.restricted,
    this.updatedTime,
    this.primaryGenres,
  });

  int trackId;
  String trackName;
  List<dynamic> trackNameTranslationList;
  int trackRating;
  int commontrackId;
  int instrumental;
  int explicit;
  int hasLyrics;
  int hasSubtitles;
  int hasRichsync;
  int numFavourite;
  int albumId;
  String albumName;
  int artistId;
  String artistName;
  String trackShareUrl;
  String trackEditUrl;
  int restricted;
  DateTime updatedTime;
  PrimaryGenres primaryGenres;

  factory Track.fromMap(Map<String, dynamic> json) => Track(
    trackId: json["track_id"],
    trackName: json["track_name"],
    trackNameTranslationList: List<dynamic>.from(json["track_name_translation_list"].map((x) => x)),
    trackRating: json["track_rating"],
    commontrackId: json["commontrack_id"],
    instrumental: json["instrumental"],
    explicit: json["explicit"],
    hasLyrics: json["has_lyrics"],
    hasSubtitles: json["has_subtitles"],
    hasRichsync: json["has_richsync"],
    numFavourite: json["num_favourite"],
    albumId: json["album_id"],
    albumName: json["album_name"],
    artistId: json["artist_id"],
    artistName: json["artist_name"],
    trackShareUrl: json["track_share_url"],
    trackEditUrl: json["track_edit_url"],
    restricted: json["restricted"],
    updatedTime: DateTime.parse(json["updated_time"]),
    primaryGenres: PrimaryGenres.fromMap(json["primary_genres"]),
  );

  Map<String, dynamic> toMap() => {
    "track_id": trackId,
    "track_name": trackName,
    "track_name_translation_list": List<dynamic>.from(trackNameTranslationList.map((x) => x)),
    "track_rating": trackRating,
    "commontrack_id": commontrackId,
    "instrumental": instrumental,
    "explicit": explicit,
    "has_lyrics": hasLyrics,
    "has_subtitles": hasSubtitles,
    "has_richsync": hasRichsync,
    "num_favourite": numFavourite,
    "album_id": albumId,
    "album_name": albumName,
    "artist_id": artistId,
    "artist_name": artistName,
    "track_share_url": trackShareUrl,
    "track_edit_url": trackEditUrl,
    "restricted": restricted,
    "updated_time": updatedTime.toIso8601String(),
    "primary_genres": primaryGenres.toMap(),
  };
}

class PrimaryGenres {
  PrimaryGenres({
    this.musicGenreList,
  });

  List<MusicGenreList> musicGenreList;

  factory PrimaryGenres.fromMap(Map<String, dynamic> json) => PrimaryGenres(
    musicGenreList: List<MusicGenreList>.from(json["music_genre_list"].map((x) => MusicGenreList.fromMap(x))),
  );

  Map<String, dynamic> toMap() => {
    "music_genre_list": List<dynamic>.from(musicGenreList.map((x) => x.toMap())),
  };
}

class MusicGenreList {
  MusicGenreList({
    this.musicGenre,
  });

  MusicGenre musicGenre;

  factory MusicGenreList.fromMap(Map<String, dynamic> json) => MusicGenreList(
    musicGenre: MusicGenre.fromMap(json["music_genre"]),
  );

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

class MusicGenre {
  MusicGenre({
    this.musicGenreId,
    this.musicGenreParentId,
    this.musicGenreName,
    this.musicGenreNameExtended,
    this.musicGenreVanity,
  });

  int musicGenreId;
  int musicGenreParentId;
  String musicGenreName;
  String musicGenreNameExtended;
  String musicGenreVanity;

  factory MusicGenre.fromMap(Map<String, dynamic> json) => MusicGenre(
    musicGenreId: json["music_genre_id"],
    musicGenreParentId: json["music_genre_parent_id"],
    musicGenreName: json["music_genre_name"],
    musicGenreNameExtended: json["music_genre_name_extended"],
    musicGenreVanity: json["music_genre_vanity"],
  );

  Map<String, dynamic> toMap() => {
    "music_genre_id": musicGenreId,
    "music_genre_parent_id": musicGenreParentId,
    "music_genre_name": musicGenreName,
    "music_genre_name_extended": musicGenreNameExtended,
    "music_genre_vanity": musicGenreVanity,
  };
}

class Header {
  Header({
    this.statusCode,
    this.executeTime,
  });

  int statusCode;
  double executeTime;

  factory Header.fromMap(Map<String, dynamic> json) => Header(
    statusCode: json["status_code"],
    executeTime: json["execute_time"].toDouble(),
  );

  Map<String, dynamic> toMap() => {
    "status_code": statusCode,
    "execute_time": executeTime,
  };
}
class User {
  String firstName;
  String lastName;
  String phoneNumber;
  String emailAddress;

  User({
    this.firstName,
    this.lastName,
    this.phoneNumber,
    this.emailAddress,
  });

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      firstName: json["first_name"],
      lastName: json["last_name"],
      phoneNumber: json["phone_number"],
      emailAddress: json["email_address"],
    );
  }
}
List jsonList = json.decode(serverResponse.body)['track_list'];
trackList: List.generate(jsonList.length, (i) => Track.fromJson(jsonList[i]));

Future<List<TrackList>> getData() async {
    var response = await http.get(url1);
    print("ssssssssssssssss");
    print(response.body);
     var item = trackFromJson(response.body);

    return item.body.track_list;
  }
//要解析此JSON数据,请执行以下操作
//
//最终jsonToDart=jsonToDartFromMap(jsonString);
导入“dart:convert”;
JsonToDart-JsonToDart-fromMap(字符串str)=>JsonToDart.fromMap(json.decode(str));
字符串jsonToDartToMap(JsonToDart数据)=>json.encode(data.toMap());
类JsonToDart{
杰森托达特({
这条信息,
});
信息;
工厂JsonToDart.fromMap(Map json)=>JsonToDart(
message:message.fromMap(json[“message”]),
);
映射toMap()=>{
“message”:message.toMap(),
};
}
类消息{
信息({
这个.头,
这个,身体,,
});
收割台;
身体;
工厂消息.fromMap(MapJSON)=>消息(
header:header.fromMap(json[“header”]),
body:body.fromMap(json[“body”]),
);
映射toMap()=>{
“header”:header.toMap(),
“body”:body.toMap(),
};
}
阶级团体{
身体({
这是我的追踪列表,
});
列表跟踪列表;
工厂Body.fromMap(MapJSON)=>Body(
trackList:List.from(json[“track_List”].map((x)=>trackList.fromMap(x)),
);
映射toMap()=>{
“track_list”:list.from(trackList.map((x)=>x.toMap()),
};
}
类跟踪列表{
跟踪列表({
这条赛道,
});
轨道;
factory TrackList.fromMap(Map json)=>TrackList(
track:track.fromMap(json[“track”]),
);
映射toMap()=>{
“track”:track.toMap(),
};
}
班级轨道{
跟踪({
这是trackId,
这个.trackName,
此.trackNameTranslationList,
这是跟踪评级,
这个.commontrackId,
这个,仪器,,
这个,明确的,,
这是我的歌词,
这是我的名字,
这是hasRichsync,
这是努姆法乌利特,
这个.albumId,
这个名字,
这位艺术家,
这位艺术家的名字,
这个.trackShareUrl,
这个.trackEditUrl,
这个,限制,,
这个.updateTime,
这是最原始的类型,
});
int-trackId;
字符串trackName;
列表trackNameTranslationList;
国际跟踪评级;
int-commontrackId;
国际仪器;
int显式;
歌词;
int-hasSubtitles;
int-hasRichsync;
内努姆法乌利特;
int-albumId;
字符串名称;
内部艺术;
字符串艺术家姓名;
字符串trackShareUrl;
字符串trackEditUrl;
int受限;
DateTime UpdateTime;
原始语体原始语体;
factory Track.fromMap(Map json)=>Track(
trackId:json[“track_id”],
trackName:json[“track_name”],
tracknametransationlist:List.from(json[“track\u name\u translation\u List”].map((x)=>x)),
trackRating:json[“track_rating”],
commontrackId:json[“commontrack_id”],
工具:json[“工具”],
显式:json[“显式”],
haslyps:json[“has_歌词”],
hasSubtitles:json[“有字幕”],
hasRichsync:json[“has_richsync”],
numFavourite:json[“num_favorite”],
albumId:json[“album_id”],
albumName:json[“album_name”],
artistId:json[“艺术家id”],
艺人名称:json[“艺人名称”],
trackShareUrl:json[“track\u share\u url”],
trackEditUrl:json[“track\u edit\u url”],
受限:json[“受限”],
updateTime:DateTime.parse(json[“updated_time”]),
primaryGenres:primaryGenres.fromMap(json[“primary_genres”]),
);
映射toMap()=>{
“轨道id”:轨道id,
“轨道名称”:轨道名称,
“track_name_translation_list”:list.from(trackname translationlist.map((x)=>x)),
“轨道等级”:轨道等级,
“commontrack_id”:commontrack id,
“器乐的”:器乐的,
“明确”:明确,
“有歌词”:有歌词,
“has_subtitles”:hasSubtitles,
“has_richsync”:hasRichsync,
“num_Favorite”:numFavourite,
“相册id”:相册id,
“唱片集名称”:唱片集名称,
“艺术家id”:artistId,
“艺人名称”:艺人名称,
“跟踪共享url”:跟踪共享url,
“跟踪编辑url”:跟踪编辑url,
“受限”:受限,
“updated_time”:updatedTime.toIso8601String(),
“primary_genres”:primaryGenres.toMap(),
};
}
阶级初级体裁{
主要流派({
这位音乐天才,
});
列出音乐天才;
factory PrimaryGenres.fromMap(Map json)=>PrimaryGenres(
musicGenreList:List.from(json[“音乐流派列表”].map((x)=>musicGenreList.fromMap(x)),
);
映射toMap()=>{
“音乐流派列表”:list.from(musicGenreList.map((x)=>x.toMap()),
};
}
班级音乐教师{
音乐天才({
这是音乐节,
});
音乐;音乐;音乐;
工厂MusicGenreList.fromMap(Map json)=>MusicGenreList(
musicGenre:musicGenre.fromMap(json[“音乐流派]),
);
映射toMap()=>{
“音乐流派”:musicGenre.toMap(),
};
}
音乐课{
音乐节({
这是音乐节,
此.musicGenreParentId,
这是musicGenreName,
此.musicGenrename已扩展,
这就是音乐的魅力,
});
国际音乐节;
int musicGenreParentId;
弦乐;
弦乐扩展;
弦乐性;
工厂MusicGenre.fromMap(Map json)=>MusicGenre(
musicGenreId:json[“音乐流派id”],
musicGenreParentId:json[“音乐流派家长id”],
musicGenreName:json[“音乐流派名称”],
MusicGenenameExtended:json[“音乐流派名称扩展”],
musicGenreVanity:json[“音乐流派虚荣”],
);
映射toMap()=>{
“音乐流派id”:musicGenreId,
“音乐流派家长id”:musicGenreParentId,
“音乐流派名称”:musicGenreName,
“音乐流派名称扩展”:音乐流派扩展,
“音乐类型与虚荣”:音乐的普遍性,
};
}
类标题{
标题({
这个.statusCode,
这是执行时间,
});
int状态码;
双执行时间;
工厂头.fromMap(MapJSON)=>头(
statusCode:json[“状态代码”],
executeTime:json[“执行时间”].toDouble(),
);
映射toMap()=>{
“状态代码”:状态代码,
“执行时间”:执行时间,
};
}
我在主f中使用了这个
{
    "message": {
      "header": {
        "status_code": 200,
        "execute_time": 0.021989107131958
      },
      "body": {
        "track_list": [
          {
            "track": {
              "track_id": 200357565,
              "track_name": "The Climb Back",
              "track_name_translation_list": [],
              "track_rating": 99,
              "commontrack_id": 113835591,
              "instrumental": 0,
              "explicit": 1,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 20,
              "album_id": 39278073,
              "album_name": "Lewis Street",
              "artist_id": 486280,
              "artist_name": "J. Cole",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/J-Cole\/The-Climb-Back?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/J-Cole\/The-Climb-Back\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-23T14:02:17Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 200187374,
              "track_name": "POPSTAR (feat. Drake)",
              "track_name_translation_list": [],
              "track_rating": 99,
              "commontrack_id": 113684105,
              "instrumental": 0,
              "explicit": 1,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 6,
              "album_id": 39216808,
              "album_name": "POPSTAR (feat. Drake) - Single",
              "artist_id": 24704782,
              "artist_name": "DJ Khaled feat. Drake, Lil Wayne & Rick Ross",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/DJ-Khaled-feat-Drake-Lil-Wayne-Rick-Ross\/POPSTAR-Drake?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/DJ-Khaled-feat-Drake-Lil-Wayne-Rick-Ross\/POPSTAR-Drake\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-17T13:38:30Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 200102123,
              "track_name": "What's Love Got to Do with It",
              "track_name_translation_list": [],
              "track_rating": 99,
              "commontrack_id": 113606423,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 18,
              "album_id": 39186667,
              "album_name": "What's Love Got to Do with It",
              "artist_id": 45989671,
              "artist_name": "Kygo feat. Tina Turner",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Kygo-Tina-Turner\/What-s-Love-Got-to-Do-with-It?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Kygo-Tina-Turner\/What-s-Love-Got-to-Do-with-It\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-23T06:28:49Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 194169151,
              "track_name": "Blinding Lights",
              "track_name_translation_list": [],
              "track_rating": 100,
              "commontrack_id": 104185748,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 5583,
              "album_id": 37216011,
              "album_name": "After Hours",
              "artist_id": 13937035,
              "artist_name": "The Weeknd",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/The-Weeknd-3\/Blinding-Lights?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/The-Weeknd-3\/Blinding-Lights\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-09T11:24:05Z",
              "primary_genres": {
                "music_genre_list": [
                  {
                    "music_genre": {
                      "music_genre_id": 7,
                      "music_genre_parent_id": 34,
                      "music_genre_name": "Electronic",
                      "music_genre_name_extended": "Electronic",
                      "music_genre_vanity": "Electronic"
                    }
                  }
                ]
              }
            }
          },
          {
            "track": {
              "track_id": 198421234,
              "track_name": "Savage Love (Laxed - Siren Beat)",
              "track_name_translation_list": [],
              "track_rating": 100,
              "commontrack_id": 112136372,
              "instrumental": 0,
              "explicit": 1,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 454,
              "album_id": 38617941,
              "album_name": "Savage Love (Laxed - Siren Beat) - Single",
              "artist_id": 45643815,
              "artist_name": "Jawsh 685 feat. Jason Derulo",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Jawsh-685-Jason-Derulo\/Savage-Love-Laxed-Siren-Beat?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Jawsh-685-Jason-Derulo\/Savage-Love-Laxed-Siren-Beat\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-09T13:06:43Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 189626475,
              "track_name": "Watermelon Sugar",
              "track_name_translation_list": [],
              "track_rating": 100,
              "commontrack_id": 104939195,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 567,
              "album_id": 36101498,
              "album_name": "Fine Line",
              "artist_id": 24505463,
              "artist_name": "Harry Styles",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Harry-Styles\/Watermelon-Sugar-2?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Harry-Styles\/Watermelon-Sugar-2\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2019-12-12T16:57:16Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 192324206,
              "track_name": "One Margarita",
              "track_name_translation_list": [],
              "track_rating": 99,
              "commontrack_id": 107705631,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 62,
              "album_id": 36710192,
              "album_name": "Born Here Live Here Die Here",
              "artist_id": 360257,
              "artist_name": "Luke Bryan",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Luke-Bryan\/One-Margarita?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Luke-Bryan\/One-Margarita\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-03-13T08:54:41Z",
              "primary_genres": {
                "music_genre_list": [
                  {
                    "music_genre": {
                      "music_genre_id": 34,
                      "music_genre_parent_id": 0,
                      "music_genre_name": "Music",
                      "music_genre_name_extended": "Music",
                      "music_genre_vanity": "Music"
                    }
                  }
                ]
              }
            }
          },
          {
            "track": {
              "track_id": 195445553,
              "track_name": "ROCKSTAR (feat. Roddy Ricch)",
              "track_name_translation_list": [],
              "track_rating": 99,
              "commontrack_id": 109586143,
              "instrumental": 0,
              "explicit": 1,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 1,
              "num_favourite": 687,
              "album_id": 37641727,
              "album_name": "BLAME IT ON BABY",
              "artist_id": 45035319,
              "artist_name": "DaBaby feat. Roddy Ricch",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/DaBaby-Roddy-Ricch\/ROCKSTAR-Roddy-Ricch?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/DaBaby-Roddy-Ricch\/ROCKSTAR-Roddy-Ricch\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-06-22T12:43:00Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 200340862,
              "track_name": "Patience",
              "track_name_translation_list": [],
              "track_rating": 98,
              "commontrack_id": 113824017,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 0,
              "num_favourite": 4,
              "album_id": 39273295,
              "album_name": "Patience",
              "artist_id": 156,
              "artist_name": "Chris Cornell",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Chris-Cornell\/Patience?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Chris-Cornell\/Patience\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-21T20:15:22Z",
              "primary_genres": {
                "music_genre_list": []
              }
            }
          },
          {
            "track": {
              "track_id": 200360270,
              "track_name": "Say Something",
              "track_name_translation_list": [],
              "track_rating": 1,
              "commontrack_id": 113837622,
              "instrumental": 0,
              "explicit": 0,
              "has_lyrics": 1,
              "has_subtitles": 1,
              "has_richsync": 0,
              "num_favourite": 0,
              "album_id": 39278673,
              "album_name": "DISCO (Deluxe)",
              "artist_id": 7712,
              "artist_name": "Kylie Minogue",
              "track_share_url": "https:\/\/www.musixmatch.com\/lyrics\/Kylie-Minogue\/Say-Something?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "track_edit_url": "https:\/\/www.musixmatch.com\/lyrics\/Kylie-Minogue\/Say-Something\/edit?utm_source=application&utm_campaign=api&utm_medium=n%2Fa%3A1409620463618",
              "restricted": 0,
              "updated_time": "2020-07-23T16:04:00Z",
              "primary_genres": {
                "music_genre_list": [
                  {
                    "music_genre": {
                      "music_genre_id": 34,
                      "music_genre_parent_id": 0,
                      "music_genre_name": "Music",
                      "music_genre_name_extended": "Music",
                      "music_genre_vanity": "Music"
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }
  }

// To parse this JSON data, do
//
//     final track = trackFromJson(jsonString);

import 'dart:convert';

Track trackFromJson(String str) => Track.fromJson(json.decode(str));

String trackToJson(Track data) => json.encode(data.toJson());

class Track {
    Track({
        this.message,
    });

    Message message;

    factory Track.fromJson(Map<String, dynamic> json) => Track(
        message: Message.fromJson(json["message"]),
    );

    Map<String, dynamic> toJson() => {
        "message": message.toJson(),
    };
}

class Message {
    Message({
        this.header,
        this.body,
    });

    Header header;
    Body body;

    factory Message.fromJson(Map<String, dynamic> json) => Message(
        header: Header.fromJson(json["header"]),
        body: Body.fromJson(json["body"]),
    );

    Map<String, dynamic> toJson() => {
        "header": header.toJson(),
        "body": body.toJson(),
    };
}

class Body {
    Body({
        this.trackList,
    });

    List<TrackList> trackList;

    factory Body.fromJson(Map<String, dynamic> json) => Body(
        trackList: List<TrackList>.from(json["track_list"].map((x) => TrackList.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "track_list": List<dynamic>.from(trackList.map((x) => x.toJson())),
    };
}

class TrackList {
    TrackList({
        this.track,
    });

    TrackClass track;

    factory TrackList.fromJson(Map<String, dynamic> json) => TrackList(
        track: TrackClass.fromJson(json["track"]),
    );

    Map<String, dynamic> toJson() => {
        "track": track.toJson(),
    };
}

class TrackClass {
    TrackClass({
        this.trackId,
        this.trackName,
        this.trackNameTranslationList,
        this.trackRating,
        this.commontrackId,
        this.instrumental,
        this.explicit,
        this.hasLyrics,
        this.hasSubtitles,
        this.hasRichsync,
        this.numFavourite,
        this.albumId,
        this.albumName,
        this.artistId,
        this.artistName,
        this.trackShareUrl,
        this.trackEditUrl,
        this.restricted,
        this.updatedTime,
        this.primaryGenres,
    });

    int trackId;
    String trackName;
    List<dynamic> trackNameTranslationList;
    int trackRating;
    int commontrackId;
    int instrumental;
    int explicit;
    int hasLyrics;
    int hasSubtitles;
    int hasRichsync;
    int numFavourite;
    int albumId;
    String albumName;
    int artistId;
    String artistName;
    String trackShareUrl;
    String trackEditUrl;
    int restricted;
    DateTime updatedTime;
    PrimaryGenres primaryGenres;

    factory TrackClass.fromJson(Map<String, dynamic> json) => TrackClass(
        trackId: json["track_id"],
        trackName: json["track_name"],
        trackNameTranslationList: List<dynamic>.from(json["track_name_translation_list"].map((x) => x)),
        trackRating: json["track_rating"],
        commontrackId: json["commontrack_id"],
        instrumental: json["instrumental"],
        explicit: json["explicit"],
        hasLyrics: json["has_lyrics"],
        hasSubtitles: json["has_subtitles"],
        hasRichsync: json["has_richsync"],
        numFavourite: json["num_favourite"],
        albumId: json["album_id"],
        albumName: json["album_name"],
        artistId: json["artist_id"],
        artistName: json["artist_name"],
        trackShareUrl: json["track_share_url"],
        trackEditUrl: json["track_edit_url"],
        restricted: json["restricted"],
        updatedTime: DateTime.parse(json["updated_time"]),
        primaryGenres: PrimaryGenres.fromJson(json["primary_genres"]),
    );

    Map<String, dynamic> toJson() => {
        "track_id": trackId,
        "track_name": trackName,
        "track_name_translation_list": List<dynamic>.from(trackNameTranslationList.map((x) => x)),
        "track_rating": trackRating,
        "commontrack_id": commontrackId,
        "instrumental": instrumental,
        "explicit": explicit,
        "has_lyrics": hasLyrics,
        "has_subtitles": hasSubtitles,
        "has_richsync": hasRichsync,
        "num_favourite": numFavourite,
        "album_id": albumId,
        "album_name": albumName,
        "artist_id": artistId,
        "artist_name": artistName,
        "track_share_url": trackShareUrl,
        "track_edit_url": trackEditUrl,
        "restricted": restricted,
        "updated_time": updatedTime.toIso8601String(),
        "primary_genres": primaryGenres.toJson(),
    };
}

class PrimaryGenres {
    PrimaryGenres({
        this.musicGenreList,
    });

    List<MusicGenreList> musicGenreList;

    factory PrimaryGenres.fromJson(Map<String, dynamic> json) => PrimaryGenres(
        musicGenreList: List<MusicGenreList>.from(json["music_genre_list"].map((x) => MusicGenreList.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "music_genre_list": List<dynamic>.from(musicGenreList.map((x) => x.toJson())),
    };
}

class MusicGenreList {
    MusicGenreList({
        this.musicGenre,
    });

    MusicGenre musicGenre;

    factory MusicGenreList.fromJson(Map<String, dynamic> json) => MusicGenreList(
        musicGenre: MusicGenre.fromJson(json["music_genre"]),
    );

    Map<String, dynamic> toJson() => {
        "music_genre": musicGenre.toJson(),
    };
}

class MusicGenre {
    MusicGenre({
        this.musicGenreId,
        this.musicGenreParentId,
        this.musicGenreName,
        this.musicGenreNameExtended,
        this.musicGenreVanity,
    });

    int musicGenreId;
    int musicGenreParentId;
    String musicGenreName;
    String musicGenreNameExtended;
    String musicGenreVanity;

    factory MusicGenre.fromJson(Map<String, dynamic> json) => MusicGenre(
        musicGenreId: json["music_genre_id"],
        musicGenreParentId: json["music_genre_parent_id"],
        musicGenreName: json["music_genre_name"],
        musicGenreNameExtended: json["music_genre_name_extended"],
        musicGenreVanity: json["music_genre_vanity"],
    );

    Map<String, dynamic> toJson() => {
        "music_genre_id": musicGenreId,
        "music_genre_parent_id": musicGenreParentId,
        "music_genre_name": musicGenreName,
        "music_genre_name_extended": musicGenreNameExtended,
        "music_genre_vanity": musicGenreVanity,
    };
}

class Header {
    Header({
        this.statusCode,
        this.executeTime,
    });

    int statusCode;
    double executeTime;

    factory Header.fromJson(Map<String, dynamic> json) => Header(
        statusCode: json["status_code"],
        executeTime: json["execute_time"].toDouble(),
    );

    Map<String, dynamic> toJson() => {
        "status_code": statusCode,
        "execute_time": executeTime,
    };
}

import 'package:flutter/material.dart';
import 'package:json_parsing_example/models.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: HomePage());
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<TrackList> trackList = List();
  bool _isLoading = false;

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

  getData() async {
    setState(() {
      _isLoading = true;
    });
    String data =
        await DefaultAssetBundle.of(context).loadString("json/parse.json");

    final track = trackFromJson(data);

    trackList = track.message.body.trackList;
    setState(() {
      _isLoading = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: _isLoading
            ? Center(
                child: CircularProgressIndicator(),
              )
            : ListView.builder(
                itemCount: trackList.length,
                itemBuilder: (context, index) {
                  var item = trackList[index];
                  return Card(
                    margin: EdgeInsets.all(10),
                    
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Text('Track Id :' + item.track.trackId.toString()),
                        Text('Track Name:' + item.track.trackName.toString()),
                        Text(
                            'Artist Name :' + item.track.artistName.toString()),
                        Text('Album Name :' + item.track.albumName.toString())
                      ],
                    ),
                  );
                }));
  }
}


Future<List<TrackList>> getData() async {
    var response = await http.get(url1);
    print("ssssssssssssssss");
    print(response.body);
     var item = trackFromJson(response.body);

    return item.body.track_list;
  }