Dart:
การทำงานกับ JSON

วิธีการ:

Dart มีการสนับสนุน JSON ในตัวด้วยไลบรารี dart:convert ทำให้การเข้ารหัสและถอดรหัส JSON เป็นเรื่องง่าย ด้านล่างนี้เป็นตัวอย่างที่แสดงการทำงานพื้นฐาน:

การแปลงสตริง JSON เป็นอ็อบเจกต์ Dart:

import 'dart:convert';

void main() {
  // สตริง JSON ตัวอย่าง
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // การถอดรหัส JSON เป็น Dart Map
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hello, ${user['name']}! You are ${user['age']} years old.');
  // ผลลัพธ์: Hello, John! You are 30 years old.
}

การเข้ารหัสอ็อบเจกต์ Dart เป็นสตริง JSON:

import 'dart:convert';

void main() {
  // อ็อบเจกต์ Dart ตัวอย่าง
  Map<String, dynamic> user = {
    'name': 'Jane',
    'age': 25,
    'email': '[email protected]'
  };
  
  // เข้ารหัส Dart Map เป็น JSON
  String jsonString = jsonEncode(user);
  
  print(jsonString);
  // ผลลัพธ์: {"name":"Jane","age":25,"email":"[email protected]"}
}

การใช้ json_serializable สำหรับโมเดลที่ซับซ้อน: สำหรับโมเดลข้อมูลที่ซับซ้อน การทำซีเรียลไลเซชันด้วยตนเองอาจเป็นเรื่องยุ่งยาก แพ็คเกจ json_serializable ทำให้กระบวนการนี้เป็นอัตโนมัติ ต้องใช้การตั้งค่าเพิ่มเติม รวมถึงการเพิ่ม dependencies ในไฟล์ pubspec.yaml และการสร้างไฟล์สร้าง หลังจากการตั้งค่า คุณสามารถใช้งานได้ดังนี้:

  1. กำหนดแบบจำลองพร้อม annotations:
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  String name;
  int age;
  String email;
  
  User({required this.name, required this.age, required this.email});
  
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
  1. สร้างโค้ดสำหรับซีเรียลไลเซชันอัตโนมัติ: ใช้คำสั่ง build runner เพื่อสร้างไฟล์ user.g.dart:
flutter pub run build_runner build
  1. ใช้โมเดลของคุณ:
void main() {
  // การแปลง JSON เป็น User
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('User: ${user.name}, Age: ${user.age}');
  // ผลลัพธ์: User: John, Age: 30

  // แปลง User กลับเป็น JSON
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // ผลลัพธ์: {"name":"John","age":30,"email":"[email protected]"}
}

ตัวอย่างเหล่านี้แสดงการทำงานพื้นฐานและขั้นสูงกับ JSON ใน Dart ทำให้ผู้พัฒนาสามารถจัดการกับงานซีเรียลไลเซชันข้อมูลในแอปพลิเคชันของตนได้อย่างราบรื่น