Konverter JSON ke Dart
Buat class model Dart tanpa dependensi dari satu objek JSON atau larik berisi beberapa sampel objek. Konverter menggabungkan semua item sampel, membuat class bertingkat, mempertahankan key JSON asli, dan menghasilkan tipe field null-safe yang tepat dengan constructor factory fromJson. Tambahkan method toJson jika Anda memerlukan output yang kompatibel dengan jsonEncode. Sampel dan kode yang dibuat tetap berada di browser ini, tidak diunggah atau dimasukkan ke URL.
Cara kerjanya
-
1
Tempel sampel yang mewakili data
Gunakan satu objek JSON atau larik objek. Beberapa item membantu menemukan field yang hilang, nullable, atau memiliki tipe campuran.
-
2
Pilih opsi Dart
Tentukan nama class utama, pilih apakah semua field perlu dibuat nullable, dan sertakan method toJson bila dibutuhkan.
-
3
Tinjau dan ekspor
Periksa class hasil inferensi, lalu salin kodenya atau unduh file models.dart secara lokal.
Cara JSON diubah menjadi model Dart null-safe
Dokumentasi resmi dart:convert menjelaskan bahwa jsonDecode() menghasilkan nilai yang kompatibel dengan JSON, seperti angka, string, Boolean, null, list, dan map dengan key string. Class model tidak dapat langsung diubah menjadi JSON, tetapi jsonEncode() dapat memanggil method toJson() miliknya. Konverter ini menghasilkan pola serialisasi manual tersebut tanpa menambahkan anotasi json_serializable atau dependensi package.
Misalnya, sampel berisi pengguna dengan alamat bertingkat. User yang dihasilkan memiliki field final dan constructor dengan parameter bernama. User.fromJson(Map<String, Object?> json) melakukan cast pada nilai skalar dan memanggil UserAddress.fromJson() untuk objek bertingkat. Jika address hilang atau bernilai null pada salah satu objek sampel, tipenya menjadi UserAddress? dan factory memeriksa null sebelum membuat objeknya. Saat toJson diaktifkan, model bertingkat diubah secara rekursif menjadi map yang dapat diterima jsonEncode().
| Temuan pada JSON | Tipe Dart yang dihasilkan |
|---|---|
| Bilangan bulat | int |
| Bilangan desimal | double |
| Sampel bulat dan desimal | num |
| Teks | String |
| Nilai boolean | bool |
| Objek bertingkat | Class model yang dibuat |
| Larik yang konsisten | List<T> |
| Larik bertingkat kosong atau tidak konsisten | List<Object?> |
| Hanya null atau nilai yang bertentangan | Object? |
Konverter memeriksa setiap objek dalam larik utama, bukan hanya memercayai item pertama. Sebuah field menjadi nullable ketika field itu tidak ada pada salah satu item atau secara eksplisit bernilai null. Anda juga dapat menjadikan semua field nullable jika API sebenarnya lebih sulit diprediksi daripada sampelnya. Panduan null safety Dart menjelaskan bahwa secara default tipe tidak menerima null dan memerlukan ? agar dapat menerima null.
Penanganan identifier dan batas inferensi
Key JSON tidak harus berupa nama anggota Dart yang valid. Tanda baca dihapus, kata diubah menjadi lowerCamelCase, kata yang dicadangkan mendapat akhiran aman, dan benturan nama mendapat akhiran angka yang konsisten. Key asli tidak berubah di json['original-key'] dan map toJson(). Nama class bertingkat menggunakan path lengkap agar objek alamat yang tidak berkaitan tidak diam-diam dijadikan satu class.
Satu sampel tidak dapat membuktikan keseluruhan kontrak API. String JSON tidak otomatis dikenali sebagai tanggal, UUID, atau enum, sedangkan larik kosong tidak memberikan informasi tentang tipe elemennya. Nama anggota objek yang berulang juga tidak aman untuk proses bolak-balik karena parser JSON umumnya mempertahankan nilai terakhir. Bandingkan model yang dihasilkan dengan dokumentasi atau skema API sebelum menggunakannya di production. Alat ini membatasi ukuran input, kedalaman, jumlah deklarasi hasil inferensi, dan ukuran output agar kerja browser tetap terkendali.
Pertanyaan yang Sering Diajukan
Tidak. Parsing, inferensi, pembuatan kode, penyalinan, dan pengunduhan berlangsung di browser Anda. JSON dan Dart yang dihasilkan tidak dikirim ke server kami atau dimasukkan ke URL.
Bisa. Flutter menggunakan Dart, sehingga class tanpa dependensi ini dapat dipakai dalam proyek Flutter. Tinjau dahulu tipe hasil inferensi berdasarkan kontrak API yang sebenarnya.
Tidak. Alat ini membuat fromJson manual dan method toJson opsional tanpa dependensi package maupun build_runner.
Field yang ditemukan bernilai null atau tidak ada akan menjadi nullable. Anda dapat memilih untuk menjadikan semua field nullable jika sampelnya tidak mewakili data sebenarnya.
Tidak. Hasil hanya mencerminkan nilai yang ditemukan. Gunakan beberapa sampel objek dan bandingkan hasilnya dengan skema atau dokumentasi penyedia API.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
Pemformat HTML
Format HTML secara lokal di browser dengan inden dua atau empat spasi. HTML tidak diunggah atau divalidasi.
Generator EditorConfig
Buat file .editorconfig dengan gaya dan ukuran indentasi, akhir baris, charset, dan aturan spasi Anda untuk format yang konsisten di berbagai IDE dan editor.
Validator Email
Validasi alamat email: pemeriksaan sintaks RFC 5322, pengecekan live record MX, serta detail bagian lokal, domain, dan panjang. Tidak ada email yang dikirim.
Alat ini tersedia dalam bahasa lain
- Trình chuyển JSON sang Dart [VI]
- JSON-in-Dart-Konverter [DE]
- Conversor de JSON para Dart [PT]
- JSON to Dart 변환기 [KO]
- ตัวแปลง JSON เป็น Dart [TH]
- محول JSON إلى Dart [AR]
- JSON till Dart-konverterare [SV]
- JSON-naar-Dart-converter [NL]
- Convertisseur JSON vers Dart [FR]
- JSONからDartへの変換ツール [JA]
- Konwerter JSON na Dart [PL]
- Conversor de JSON a Dart [ES]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]