Как происходит выборка | Загрузка json данных в список <myClass>во флаттере Точно работает? - PullRequest
0 голосов
/ 10 января 2020

Как это работает в моем случае ниже?

Я пробовал много способов, но я просто не мог понять это.

Кроме того, как загрузить локальный файл json и использовать его ключи: значения как класс?

class Countries{
  int id;
  String name;

  Countries(this.id,this.name);

  static Future<List<Countries>> getJsonCountries() async {
    String apiUrl = "https://gist.githubusercontent.com/keeguon/2310008/raw/bdc2ce1c1e3f28f9cab5b4393c7549f38361be4e/countries.json";
    http.Response resp = await http.get(apiUrl);
    return json.decode(resp.body);
  }

  static List<Countries> getCountries() {

        List<Countries> ls =  getJsonCountries() as List<Countries>; // Idk why this does not work ..
        return ls;
        // return <Countries>[ <-- this works fine ...
        //   Countries(1,'Morocco'),
        //   Countries(2,'France'),
        //   Countries(3,'USA'),
        //   Countries(4,'Tunisia'),
        // ];
  }
}

1 Ответ

1 голос
/ 11 января 2020

Ваш json файл неправильно отформатирован. Строки должны быть заключены в двойные кавычки. Это немедленно остановит вас от разбора json в Dart / Flutter. И значения, и ключи должны быть в двойных кавычках, чтобы их можно было проанализировать с помощью Dart.

Вы можете проверить это самостоятельно, скопировав сюда свой json и протестировав его: https://jsonformatter.curiousconcept.com/

...