Skip to Content
Dart📘 Ngôn ngữ DartLàm việc với JSON

Làm việc với JSON trong Dart

1. Giới thiệu

Dart sử dụng thư viện dart:convert để encode/decode JSON.

2. Import thư viện

import 'dart:convert';

3. Decode JSON string

import 'dart:convert'; void main() { String jsonString = '{"name": "Alice", "age": 25}'; Map<String, dynamic> data = jsonDecode(jsonString); print(data['name']); // Alice print(data['age']); // 25 }

4. Encode to JSON string

import 'dart:convert'; void main() { Map<String, dynamic> data = { 'name': 'Bob', 'age': 30, 'hobbies': ['reading', 'gaming'], }; String jsonString = jsonEncode(data); print(jsonString); // {"name":"Bob","age":30,"hobbies":["reading","gaming"]} }

5. JSON với Class

import 'dart:convert'; class User { String name; int age; String email; User(this.name, this.age, this.email); // fromJson factory factory User.fromJson(Map<String, dynamic> json) { return User( json['name'], json['age'], json['email'], ); } // toJson method Map<String, dynamic> toJson() { return { 'name': name, 'age': age, 'email': email, }; } } void main() { // Parse JSON to object String jsonString = '{"name":"Alice","age":25,"email":"alice@email.com"}'; var user = User.fromJson(jsonDecode(jsonString)); // Object to JSON print(jsonEncode(user.toJson())); }

6. JSON Array

import 'dart:convert'; void main() { String jsonArray = '[{"name":"Alice"},{"name":"Bob"}]'; List<dynamic> list = jsonDecode(jsonArray); for (var item in list) { print(item['name']); } }

7. Nested JSON

import 'dart:convert'; class Address { String city; String country; Address(this.city, this.country); factory Address.fromJson(Map<String, dynamic> json) { return Address(json['city'], json['country']); } Map<String, dynamic> toJson() => {'city': city, 'country': country}; } class Person { String name; Address address; Person(this.name, this.address); factory Person.fromJson(Map<String, dynamic> json) { return Person( json['name'], Address.fromJson(json['address']), ); } Map<String, dynamic> toJson() => { 'name': name, 'address': address.toJson(), }; }

8. Pretty print JSON

import 'dart:convert'; void main() { var data = {'name': 'Alice', 'hobbies': ['a', 'b']}; var encoder = JsonEncoder.withIndent(' '); print(encoder.convert(data)); /* { "name": "Alice", "hobbies": [ "a", "b" ] } */ }

9. Safe JSON parsing

import 'dart:convert'; T? tryParseJson<T>(String json, T Function(dynamic) parser) { try { return parser(jsonDecode(json)); } catch (e) { print('JSON parse error: $e'); return null; } } void main() { String json = '{"name": "Alice"}'; var user = tryParseJson(json, (data) => User.fromJson(data)); }

10. Đọc JSON từ file

import 'dart:io'; import 'dart:convert'; Future<void> main() async { var file = File('data.json'); String content = await file.readAsString(); var data = jsonDecode(content); print(data); }

📝 Tóm tắt

  • jsonDecode() parse JSON string → Dart object
  • jsonEncode() Dart object → JSON string
  • fromJson() factory cho parsing
  • toJson() method cho serialization
  • JsonEncoder.withIndent() cho pretty print
Last updated on