# JSON cho danh sách, và fail-soft

> @Serializable, serializer tự viết cho ImmutableList, mô hình hóa kết quả đọc bằng sealed interface HistoryRead (Ok/Empty/Corrupt), lọc bản ghi hỏng, cắt về giới hạn, và cache tránh mã hóa lại khi không cần.

- URL: https://dantech.academy/courses/kotlin-mobile-101/06-full-app/lesson-02-json-for-lists
- Khóa học: [Kotlin Mobile 101](https://dantech.academy/courses/kotlin-mobile-101.md)
- Module: Ráp App Hoàn Chỉnh
- Thời lượng: 16 phút
- Độ khó: intermediate
- Truy cập: Dành cho học viên

## Mục tiêu

- Mã hóa một danh sách đối tượng thành JSON và giải mã lại an toàn
- Áp dụng fail-soft: dữ liệu hỏng thì lọc bỏ phần hỏng, không kéo sập phần còn lại, nhưng vẫn gọi đúng tên lỗi bằng một sealed interface

## Nội dung bài học

1. @Serializable: Đánh Dấu Là Đủ
2. Serializer Tự Viết Cho ImmutableList
3. Đọc: Ba Lớp Bảo Vệ
4. Fail-Soft: Vì Sao Không Ném Lỗi
5. Ghi: Bỏ Qua Khi Không Có Gì Đổi

## Học cùng AI agent

Toàn bộ bài học dành cho học viên của khóa. Học viên mở bài trên web và bấm nút **Markdown** để copy toàn bài, rồi dán vào Claude, ChatGPT, Cursor hoặc agent bạn đang dùng. Nhanh hơn: tạo token ở `/profile/ai-agents` và agent đọc bài trực tiếp qua MCP.

- [Đăng ký khóa học](https://dantech.academy/kotlin-mobile-101/checkout)

---

- Bài trước: [Lưu dữ liệu bằng key-value](https://dantech.academy/courses/kotlin-mobile-101/06-full-app/lesson-01-key-value-persistence.md)
- Bài tiếp theo: [Ráp app: từ điểm khởi động tới màn hình](https://dantech.academy/courses/kotlin-mobile-101/06-full-app/lesson-03-assemble-the-app.md)
