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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำอธิบายในตัว: override, deprecated
- การเขียนคำอธิบายแบบกำหนดเอง
- การสร้างโค้ดด้วย build_runner
- json_serializable ในการใช้งานจริง