如何在 Flutter 中解码 JSON?
问题很简单,但答案并不简单,至少对我而言。
我有一个使用大量 JSON 字符串的项目。基本上,应用程序和服务器之间的整个通信都是通过 JSON 进行的。
我一直在使用 JSON.decode(json_string)
来处理它,但是今天我更新了 Flutter 核心(0.5.8-pre.178)并且 JSON.decode 不再可用.
我去了Flutter Docs寻求帮助,但它仍然说要使用 JSON.decode。
那么,从现在开始如何在 Flutter 中解码 JSON?
最佳答案
你需要导入 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>;
模型类示例
模型类包含 map 转换逻辑:
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);
查看我的完整答案 here .
生成序列化代码
写序列化代码容易出错,所以一般推荐使用json_serializable由 Dart 团队打包。但是,您可以了解不同方法的优缺点 here .
如果您想要更多选项,还可以查看 built_value包。
另见
关于json - 如何在 Flutter 中解码 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601519/