JSON ke Dart Class
Hasilkan kelas Dart untuk Flutter dari JSON, langsung di browser Anda.
Untuk apa alat ini
JSON ke kelas Dart untuk Flutter
Siap untuk Flutter
Kode kompatibel dengan Flutter, json_serializable, dan freezed. Siap digunakan dengan http, dio, atau Riverpod.
100% privat
JSON API Anda diproses hanya di browser Anda. Data sensitif tidak pernah meninggalkan perangkat Anda.
Null safety yang tepat
Mendeteksi field nullable secara otomatis. Tipe wajib dengan required, opsional dengan ? berdasarkan JSON.
Instan
Kelas Dart siap dalam milidetik. Tanpa daftar, tanpa menunggu, tanpa batas.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel JSON Anda
Tempel JSON dari respons API Anda. Alat ini menyimpulkan tipe Dart yang tepat untuk setiap field.
Kelas Dart dihasilkan
Anda mendapatkan kelas Dart dengan null safety, konstruktor factory fromJson(), metode toJson(), dan pengetikan lengkap yang kompatibel dengan json_serializable.
Integrasikan ke Flutter
Salin kelas yang dihasilkan ke proyek Flutter Anda. Langsung kompatibel dengan paket http, dio, atau klien HTTP apa pun.
FAQ
Ada pertanyaan?
json_serializable adalah paket resmi komunitas Dart/Flutter untuk serialisasi JSON dengan pembuatan kode otomatis. Alih-alih menulis metode fromJson() dan toJson() secara manual, Anda mendefinisikan kelas dengan anotasi @JsonSerializable() dan generator kode (build_runner) secara otomatis membuat metodenya. Alat ini menghasilkan kode yang kompatibel dengan json_serializable: struktur kelas, tipe, dan pola factory fromJson persis seperti yang dihasilkan build_runner, sehingga Anda dapat menggunakan kode yang dihasilkan langsung atau sebagai titik awal untuk versi generasi otomatis.
Pola factory fromJson() adalah standar di Dart untuk deserialisasi JSON. Konstruktor factory dapat mengembalikan instans yang sudah ada atau membuat yang baru; dalam kasus ini ia menerima Map<String, dynamic> (hasil dari jsonDecode()) dan membangun objeknya. Contoh: factory User.fromJson(Map<String, dynamic> json) => User(id: json['id'] as int, name: json['name'] as String). Metode toJson() melakukan kebalikannya. Pola ini eksplisit, aman dari segi tipe, dan mudah diuji.
Dart 2.12 (2021) memperkenalkan sound null safety, salah satu fitur bahasa terpenting. Dengan null safety, tipe tidak dapat bernilai null secara default: String selalu string non-null, sedangkan String? dapat bernilai null. Dalam konteks JSON, field yang mungkin tidak ada atau bernilai null harus diketik sebagai nullable (String?, int?). Kata kunci required di konstruktor menunjukkan parameter wajib dan tidak boleh dihilangkan. Alat ini secara otomatis mendeteksi field JSON mana yang bisa null berdasarkan nilainya dan menghasilkan pengetikan yang tepat.
Alur Flutter yang umum adalah: 1) Lakukan panggilan HTTP dengan http.get() atau dio, 2) Decode JSON dengan jsonDecode(response.body), 3) Teruskan Map yang dihasilkan ke konstruktor factory: final user = User.fromJson(jsonDecode(response.body)). Untuk daftar objek: final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Dengan paket dio, Anda dapat menggunakan interceptor untuk mengubah respons secara otomatis. Dengan Riverpod atau BLoC, kelas yang dihasilkan digunakan langsung sebagai state.
freezed adalah paket pembuatan kode untuk Dart/Flutter yang melampaui json_serializable. Ia menghasilkan kelas immutable dengan: metode copyWith() untuk membuat salinan yang dimodifikasi, pola union/sealed untuk memodelkan state (mirip Kotlin sealed class), kesetaraan dan hashCode otomatis, serta serialisasi JSON terintegrasi. Paket ini sangat populer dengan Riverpod (manajer state yang direkomendasikan komunitas Flutter) untuk memodelkan state aplikasi. Kombinasi freezed dan Riverpod adalah salah satu pola arsitektur paling banyak diadopsi dalam Flutter profesional.
Adopsi Flutter 2020-2026, sistem tipe Dart, dan pengembangan API mobile
Flutter dirilis dalam versi stabil oleh Google pada Desember 2018. Pada 2020, dengan Flutter 1.17 dan stabilisasi null safety, adopsi massal dimulai. Flutter 2 (2021) memperkenalkan dukungan multi-platform (web, desktop) dan null safety stabil. Flutter 3 (2022) menambahkan dukungan penuh untuk macOS, Linux, dan Windows. Pada 2024-2026, Flutter adalah framework paling populer untuk pengembangan aplikasi mobile lintas platform, dengan lebih dari 1 juta aplikasi produksi menurut Google. Integrasi dengan REST dan GraphQL API sangat fundamental di hampir semua aplikasi Flutter.
Sistem tipe Dart, yang dirancang oleh Google (tim yang sama dengan TypeScript), menggabungkan static typing dengan inferensi tipe. Dart adalah bahasa yang dikompilasi (ke ARM, native x64 untuk mobile/desktop, dan ke JavaScript untuk web) dengan runtime berkinerja tinggi. Tidak seperti JavaScript, Dart memiliki tipe primitif sejati (int, double, bool, String) tanpa konversi implisit. Sound null safety membuat kompiler memastikan variabel non-nullable tidak pernah bernilai null, menghilangkan seluruh kelas error runtime.
Dalam pengembangan mobile Flutter modern, mengonsumsi REST atau GraphQL API adalah pola dominan untuk komunikasi klien-server. Paket http (resmi dari dart.dev) dan dio (paket komunitas paling populer, dengan interceptor dan internasionalisasi) adalah klien HTTP utama. Untuk manajemen state dengan data API, Riverpod (dibuat oleh Remi Rousselet, juga pencipta provider) dengan AsyncNotifier adalah pola yang direkomendasikan pada 2024. Arsitektur yang umum adalah: lapisan Repository (kelas data dengan fromJson/toJson) lalu lapisan Service (logika bisnis) lalu provider Riverpod lalu widget UI.