Как декодировать JSON в Flutter?

Как декодировать JSON во флаттере?

Вопрос прост, но ответ не, по крайней мере, для меня.

У меня есть проект, который использует много строк JSON. По сути, вся связь между приложением и сервером осуществляется через JSON.

Я использовал JSON.decode(json_string) для решения этой JSON.decode(json_string), но сегодня я обновил ядро Flutter (0.5.8-pre.178), и JSON.decode больше не доступен.

Я пошел в Flutter Docs, чтобы обратиться за помощью, но он по-прежнему говорит использовать JSON.decode.

Итак, как теперь декодировать JSON во Flutter?

Ответы

Ответ 1

Просто используйте

json.decode()

или же

jsonDecode()

В Дарте 2 все константы кричащего случая были заменены на нижний верблюд.

Ответ 2

Вам нужно будет импортировать dart:convert:

import 'dart:convert';

Встроенный пример

String rawJson = '{"name":"Mary","age":30}';

Map<String, dynamic> map = jsonDecode(rawJson); // import 'dart:convert';

String name = map['name'];
int age = map['age'];

Person person = Person(name, age);

Примечание: когда я делал это в VS Code для серверной части Dart, мне нужно было указать тип:

Map<String, dynamic> map = jsonDecode(rawJson) as Map<String, dynamic>;

Пример модельного класса

Класс модели включает логику преобразования карты:

class Person {
  String name;
  int age;
  Person(this.name, this.age);

  // named constructor
  Person.fromJson(Map<String, dynamic> json)
      : name = json['name'],
        age = json['age'];

  // method
  Map<String, dynamic> toJson() {
    return {
      'name': name,
      'age': age,
    };
  }

}

И преобразование JSON выполняется следующим образом:

String rawJson = '{"name":"Mary","age":30}';
Map<String, dynamic> map = jsonDecode(rawJson);
Person person = Person.fromJson(map);

Смотрите мой полный ответ здесь.

Генерация кода сериализации

При написании кода сериализации легко ошибиться, поэтому обычно рекомендуется использовать пакет json_serializable Dart Team. Тем не менее, вы можете прочитать о плюсах и минусах различных методов здесь.

Если вы хотите еще больше опций, вы также можете проверить пакет built_value.

Смотрите также

Ответ 3

Вам нужно использовать import 'dart:convert';

Расшифровать: JsonDecoder().convert("$response");

Encode: JsonEncoder().convert(object)