十四、Dart中使用JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于JavaScript的一个子集。在Dart中,你可以使用dart:convert库来进行JSON的编码和解码。
1. JSON编码
你可以使用jsonEncode函数将一个Dart对象转换为JSON字符串。例如:
import 'dart:convert'; void main() { var person = { 'name': 'John Doe', 'age': 30, 'city': 'New York' }; var json = jsonEncode(person); print(json); // 输出:{"name":"John Doe","age":30,"city":"New York"}}
如果你需要将一个Dart类转换为JSON字符串,那么你需要在对象中添加一个toJson方法,这个方法应该返回一个可以直接转换为JSON字符串的对象。例如:
import 'dart:convert'; class Person { String name; int age; String city; Person(this.name, this.age, this.city); Map toJson() => { 'name': name, 'age': age, 'city': city, };} void main() { var person = Person('John Doe', 30, 'New York'); var json = jsonEncode(person); print(json); // 输出:{"name":"John Doe","age":30,"city":"New York"}}
- JSON解码
你可以使用jsonDecode函数将一个JSON字符串转换为Dart对象。例如:
import 'dart:convert'; void main() { var json = '{"name":"John Doe","age":30,"city":"New York"}'; var person = jsonDecode(json); print(person); // 输出:{name: John Doe, age: 30, city: New York}}
如果你需要将一个JSON字符串转换为Dart类,那么你需要在对象中添加一个命名构造函数,例如fromJson,这个构造函数应该接收一个Map类型的参数。例如:
import 'dart:convert'; class Person { String name; int age; String city; Person(this.name, this.age, this.city); Person.fromJson(Map json) : name = json['name'], age = json['age'], city = json['city'];} void main() { var json = '{"name":"John Doe","age":30,"city":"New York"}'; var person = Person.fromJson(jsonDecode(json)); print(person.name); // 输出:John Doe}
带你读《深入浅出Dart》十四、Dart中使用JSON(2)https://developer.aliyun.com/article/1349006?groupCode=tech_library