Ответ 1
Просто используйте
json.decode()
или же
jsonDecode()
В Дарте 2 все константы кричащего случая были заменены на нижний верблюд.
Как декодировать 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?
Просто используйте
json.decode()
или же
jsonDecode()
В Дарте 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.
Вам нужно использовать import 'dart:convert';
Расшифровать:
JsonDecoder().convert("$response");
Encode:
JsonEncoder().convert(object)