Flutter Json Encode List
31,213
Solution 1
Add toJson
method to your Player
class:
Map<String, dynamic> toJson(){
return {
"name": this.name,
"imagePath": this.imagePath,
"totalGames": this.totalGames,
"points": this.points
};
}
Then you can call jsonEncode
on the list of players:
String encoded = jsonEncode(players) // this will automatically call toJson on each player
Solution 2
Add on class:
Map<String,dynamic> toJson(){
return {
"name": this.name,
"imagePath": this.imagePath,
"totalGames": this.totalGames,
"points": this.points
};
}
and call
String json = jsonEncode(players.map((i) => i.toJson()).toList()).toString();
Solution 3
List jsonList = players.map((player) => player.toJson()).toList();
print("jsonList: ${jsonList}");
Related videos on Youtube
Author by
willy wijaya
Updated on July 09, 2022Comments
-
willy wijaya almost 2 years
How to encode list to json?
This is my class for Json.
class Players{ List<Player> players; Players({this.players}); factory Players.fromJson(List<dynamic> parsedJson){ List<Player> players = List<Player>(); players = parsedJson.map((i)=>Player.fromJson(i)).toList(); return Players( players: players, ); } } class Player{ final String name; final String imagePath; final int totalGames; final int points; Player({this.name,this.imagePath, this.totalGames, this.points}); factory Player.fromJson(Map<String, dynamic> json){ return Player( name: json['name'], imagePath: json['imagePath'], totalGames: json['totalGames'], points: json['points'], ); } }
I managed to decode with fromJson, the result is in List. Now that I have another player to add in json and want to encode the list to json, have no idea to do it. It result always failed.
var json = jsonDecode(data); List<Player> players = Players.fromJson(json).players; Player newPlayer = Player(name: _textEditing.text,imagePath: _imagePath,totalGames: 0,points: 0); players.add(newPlayer); String encode = jsonEncode(players.players);
What do I need to add on Players or Player?
-
Lucas about 5 yearsYou don't need the static function.
jsonEncode
will work with aList<Player>
if the class hastoJson
implemented. -
willy wijaya about 5 years@Lucas You are right! No need for static function. Thank you!
-
Manoj Choudhari over 4 yearsCan you please add description on why this solves the issue mentioned in the question ?
-
Steven about 4 yearsCan you explain why is variable json declared as String? I'm quite confused
-
Lucio Pelinson about 4 yearsHi Steven, sometimes we need to work with json as plain/text, but it's just an example.