1. JSON 序列化和反序列化:
import 'dart:convert';
void main() {
// JSON 字符串
String jsonString = '{"name": "John", "age": 30, "city": "New York"}';
// JSON 解码为 Map
Map<String, dynamic> decodedMap = json.decode(jsonString);
print('Decoded Map: $decodedMap');
// JSON 编码 Map 为字符串
String encodedJson = json.encode(decodedMap);
print('Encoded JSON: $encodedJson');
}
2. 使用 Dart 内置的 dart:convert 库:
import 'dart:convert';
class Person {
String name;
int age;
String city;
Person(this.name, this.age, this.city);
// 将对象转为 JSON Map
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
'city': city,
};
}
// 从 JSON Map 构造对象
factory Person.fromJson(Map<String, dynamic> json) {
return Person(
json['name'] ?? '',
json['age'] ?? 0,
json['city'] ?? '',
);
}
}
void main() {
// 创建 Person 对象
Person person = Person('John', 30, 'New York');
// 将对象转为 JSON 字符串
String jsonString = json.encode(person.toJson());
print('Encoded JSON: $jsonString');
// 从 JSON 字符串构造对象
Map<String, dynamic> decodedMap = json.decode(jsonString);
Person decodedPerson = Person.fromJson(decodedMap);
print('Decoded Person: $decodedPerson');
}
3. 使用第三方库 json_serializable:
json_serializable是一个用于生成序列化和反序列化代码的强大库,它通过注解来简化 JSON 处理。
首先,在pubspec.yaml文件中添加依赖:
dependencies:
json_annotation: ^4.3.0
json_serializable: ^4.5.1
然后,运行以下命令来获取依赖项:
flutter pub get
import 'package:json_annotation/json_annotation.dart';
part 'person.g.dart';
@JsonSerializable()
class Person {
String name;
int age;
String city;
Person(this.name, this.age, this.city);
// 使用注解自动生成 toJson 和 fromJson 方法
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
为了生成 toJson 和 fromJson 方法,你需要运行以下命令:
flutter pub run build_runner build
这将自动生成一个名为 person.g.dart 的文件,其中包含自动生成的代码。
以上是一些在Flutter中处理JSON的基本示例。根据实际需求和项目规模,你可以选择不同的方法。
转载请注明出处:http://www.zyzy.cn/article/detail/9609/Flutter