Konverter JSON ke Dart

Langkah 1 / 333%

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. 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. 2

    Pilih opsi Dart

    Tentukan nama class utama, pilih apakah semua field perlu dibuat nullable, dan sertakan method toJson bila dibutuhkan.

  3. 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

Alat ini tersedia dalam bahasa lain