Dart / Flutter - не может присвоить значение bool из ответа JSON - PullRequest
0 голосов
/ 23 января 2019

Новичок в Dart / Flutter борется с проблемой при назначении bool valuse из ответа JSON - bool error равно null, и я получаю:

Неудачное утверждение: логическое выражение не должно бытьnull

Я не знаю, что происходит, поскольку ответ декодируется правильно, и нет проблем с другими полями (пожалуйста, посмотрите на вывод Logcat).

это мой JSON:

{
"error:":false,
"id":1,
"name":"test"
}

Мое будущее:

Future<dynamic> fetchData() async {
http.Response response = await http.get(Values.URL, headers: {HttpHeaders.contentTypeHeader: "application/json"});

if (response.statusCode == 200) {
  debugPrint(response.body);

  var body = jsonDecode(response.body);

  bool error = body["error"];
  var id = body["id"];
  var name = body["name"];

  print("bool:" + error.toString());
  print("id:" + id.toString());
  print("name:" + name);

  if (error) {
    print("no error");
  } else {
    print("error");
  }
} else {
  throw Exception("statusCode exception e");
}

и вывод Logcat:

I/flutter: {
I/flutter:   "error:":false,
I/flutter:   "id":1,
I/flutter:   "name":"test"
I/flutter: }
I/flutter: bool:null
I/flutter: id:1
I/flutter: name:test
I/flutter: Failed assertion: boolean expression must not be null

Не могли бы вы сообщить мне, что я делаю здесь неправильно?Любая помощь будет высоко ценится!СПАСИБО:)

1 Ответ

0 голосов
/ 24 января 2019

Я хотел бы поблагодарить Гюнтера Цохбауэра за то, что он указал на мою глупую ошибку в структуре JSON:

"error:":false

должно быть:

"error":false

не забудьте отдохнуть от кодирования парни ...;)

...