0Pricing
Dart Academy · บทเรียน

json_serializable ในการใช้งานจริง

สร้างการแปลงข้อมูลของโมเดลโดยอัตโนมัติ

json_serializable ในการใช้งานจริง เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาโค้ดพื้นฐานสำหรับ JSON

การเขียน fromJson และ toJson ด้วยตนเองทั้งน่าเบื่อและมีโอกาสเกิดข้อผิดพลาด แพ็กเกจ json_serializable จะสร้างทั้งสองอย่างให้คุณจากแบบจำลอง 📦

เพิ่มแพ็กเกจ

คุณต้องใช้ json_annotation เป็นการพึ่งพาปกติ และใช้ json_serializable กับ build_runner เป็นการพึ่งพาสำหรับการพัฒนาเพื่อสร้างโค้ด

dependencies:
  json_annotation: ^4.9.0

ใส่คำอธิบายประกอบให้คลาส

ทำเครื่องหมายแบบจำลองของคุณด้วย @JsonSerializable คำอธิบายประกอบนี้บอกตัวสร้างให้สร้างโค้ดสำหรับการแปลงข้อมูลของคลาสนั้น

@JsonSerializable()
class User {
  final String name;
  User(this.name);
}

ประกาศไฟล์ส่วนที่สร้างขึ้น

เพิ่มคำสั่ง part เพื่อให้ไฟล์ของคุณรวมตัวช่วยที่สร้างขึ้นได้ ชื่อไฟล์จะตรงกับชื่อไฟล์ของคุณและเติมส่วนลงท้าย .g.dart

part 'user.g.dart';

เชื่อมต่อ fromJson

เพิ่มโรงงานที่ส่งต่อการทำงานไปยังฟังก์ชันที่สร้างขึ้น ตัวช่วย _$UserFromJson จะถูกสร้างให้คุณโดยตัวสร้าง

factory User.fromJson(Map<String, dynamic> j) =>
    _$UserFromJson(j);

เชื่อมต่อ toJson

เพิ่มเมธอดที่เรียกตัวเขียนซึ่งสร้างขึ้น ตัวช่วย _$UserToJson จะแปลงออบเจ็กต์ของคุณกลับเป็นแผนที่ JSON

Map<String, dynamic> toJson() => _$UserToJson(this);

สร้างโค้ด

เรียกใช้ build_runner หนึ่งครั้ง แล้วไฟล์ user.g.dart จะปรากฏขึ้นพร้อมฟังก์ชันตัวช่วยทั้งสองที่ทำงานครบถ้วนและพร้อมใช้งาน

dart run build_runner build

เปลี่ยนชื่อคีย์ JSON

เมื่อชื่อฟิลด์ใน API แตกต่างจากชื่อใน Dart ให้ใช้ @JsonKey เพื่อจับคู่ชื่อเหล่านั้น โค้ดของคุณยังคงอ่านง่าย ขณะที่ JSON ตรงตามที่เซิร์ฟเวอร์ต้องการ

@JsonKey(name: 'full_name')
final String fullName;

กำหนดค่าเริ่มต้น

คุณสามารถกำหนดค่าทดแทนสำหรับฟิลด์ที่หายไปได้ ตัวเลือก defaultValue จะเติมค่าให้เมื่อไม่มีคีย์นั้นใน JSON

@JsonKey(defaultValue: 0)
final int score;

โมเดลซ้อนกันก็ทำงานได้ทันที

หากฟิลด์หนึ่งเป็นคลาส @JsonSerializable อีกคลาสหนึ่ง ตัวสร้างจะทำการแปลงข้อมูลให้แบบวนซ้ำ ออบเจ็กต์ที่ซ้อนกันจึงไม่ต้องจัดการเพิ่มเติม

ใช้งานเหมือน Dart ปกติ

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

final u = User.fromJson(data);
final back = u.toJson();

ตรวจสอบอย่างรวดเร็ว

คำอธิบายประกอบใดใช้ทำเครื่องหมายคลาสเพื่อสร้างโค้ด JSON

สรุป

ใส่คำอธิบายประกอบด้วย @JsonSerializable เชื่อมต่อ fromJson และ toJson จากนั้นเรียกใช้ build_runner ใช้ @JsonKey เพื่อจับคู่ชื่อฟิลด์และกำหนดค่าเริ่มต้น 🎉

คำถามที่พบบ่อย

บทเรียน “json_serializable ในการใช้งานจริง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “json_serializable ในการใช้งานจริง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “json_serializable ในการใช้งานจริง”

สร้างการแปลงข้อมูลของโมเดลโดยอัตโนมัติ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “json_serializable ในการใช้งานจริง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม

ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คำอธิบายในตัว: override, deprecated
  2. การเขียนคำอธิบายแบบกำหนดเอง
  3. การสร้างโค้ดด้วย build_runner
  4. json_serializable ในการใช้งานจริง
← กลับไปที่ Dart Academy