如何在Flutter中解码JSON?

问题描述 投票:11回答:2

如何在Flutter中解码JSON?

问题很简单,但答案不是,至少对我而言。

我有一个使用大量JSON字符串的项目。基本上,应用程序和服务器之间的整个通信都是通过JSON进行的。

我一直在使用JSON.decode(json_string)来处理它,但今天我更新了Flutter核心(0.5.8-pre.178)并且JSON.decode不再可用。

我去Flutter Docs寻求帮助,但它仍然说要使用JSON.decode。

那么,从现在开始如何在Flutter中解码JSON?

json flutter
2个回答
21
投票

只是用

json.decode()

要么

jsonDecode()

在Dart 2中,所有尖叫案例常数都改为低骆驼案。


21
投票

您需要导入dart:convert

import 'dart:convert';

Inline example

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);

注意:当我在服务器端Dart的VS Code中执行此操作时,我必须指定类型:

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

Model class example

模型类包括地图转换逻辑:

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

Generating the serialization code

编写序列化代码时很容易出错,因此通常建议使用Dart团队的json_serializable软件包。但是,您可以阅读here不同方法的优缺点。

如果您想要更多选项,还可以查看built_value包。

See also

© www.soinside.com 2019 - 2024. All rights reserved.