json - 如何在 Flutter 中解码 JSON?

标签 json flutter parsing dart decode

如何在 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/

相关文章:

java - 在 java 中使用 Jackson 库解析嵌套的 JSON 数组

java - Json动态反序列化与 jackson

file - 如何在具有源图像的 Flutter 中覆盖 Assets 图像?

c - 解析文本文件的简单方法?

java - 如何从 Java 源代码生成 AST?

javascript - IE8 中的 JSON 语法错误?

java - 最简单的设置和忘记分布式数据库来存储简单的 JSON 类结构?

permissions - 如何检测更改设置后应用程序是否重新打开?

android - 如何在 CachedNetworkImage flutter 中清除缓存

perl - 如何在 Perl 中有效地解析 CSV 文件?