Список кодов флаттера Json - PullRequest
1 голос
/ 06 марта 2019

Как закодировать список в json?

Это мой класс для 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'],
    );
  }
}

Мне удалось декодировать с fromJson, результат находится в List.Теперь, когда у меня есть еще один игрок, который нужно добавить в json, и я хочу закодировать список в json, я понятия не имею, как это сделать.Результат всегда не удался.

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);

Что мне нужно добавить на игроков или игроков?

1 Ответ

4 голосов
/ 06 марта 2019

сначала добавьте в свой класс игрока 2 функции ниже:

Map<String,dynamic> toJson(){
    return {
      "name": this.name,
      "imagePath": this.imagePath,
      "totalGames": this.totalGames,
      "points": this.points
    };
  }

static List encondeToJson(List<Player>list){
    List jsonList = List();
    list.map((item)=>
      jsonList.add(item.toJson())
    ).toList();
    return jsonList;
}

, тогда вам нужно сделать следующее с вашим players списком

List jsonList = Player.encondeToJson(players);
print("jsonList: ${jsonList}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...