JSON verilerini Dart sınıflarına dönüştüren güçlü ve kullanıcı dostu bir Flutter uygulaması.
- JSON'dan Dart Class Dönüştürme: JSON verilerinizi otomatik olarak Dart sınıflarına dönüştürün
- Nested Class Desteği: İç içe geçmiş JSON objelerini ayrı Dart sınıflarına otomatik dönüştürme
- Syntax Highlighting: Üretilen kodları renklendirilmiş görüntüleme
- 7 Konfigürasyon Seçeneği:
finalkeyword kullanımı (varsayılan: aktif)- Nullable/Optional tipler (varsayılan: aktif)
fromJsonvetoJsonmetodları (varsayılan: aktif)copyWithmetodurequiredparametreler- Sadece tip tanımlamaları (method'suz)
- Data class (== ve hashCode override)
- Tek Tıkla Kopyalama: Üretilen kodu panoya kopyalama
- Akıllı Tip Algılama: JSON değerlerinden otomatik tip çıkarımı
- Hata Yönetimi: Geçersiz JSON için kullanıcı dostu hata mesajları
Uygulama iki panel düzeninde çalışır:
- Sol Panel: JSON girişi, sınıf adı ve konfigürasyon seçenekleri
- Sağ Panel: Syntax highlighting ile üretilen Dart kodu
- Flutter SDK (3.10.0 veya üzeri)
- Dart SDK (3.10.0 veya üzeri)
dependencies:
flutter: sdk: flutter
flutter_highlight: ^0.7.0- Depoyu klonlayın:
git clone <repo-url>
cd flutter_json_plus- Bağımlılıkları yükleyin:
flutter pub get- Uygulamayı çalıştırın:
# Web için
flutter run -d chrome
# macOS için
flutter run -d macos
# Diğer platformlar için
flutter run-
Class İsmi Girin: Oluşturulacak ana sınıf için bir isim belirleyin (örn:
User) -
JSON Verisi Yapıştırın: JSON verinizi büyük metin alanına yapıştırın
-
Seçenekleri Ayarlayın: İhtiyacınıza göre switch'leri açın/kapatın:
- Use final: Alanları
finalyapar - Nullable: Alanları nullable yapar
- fromJson / toJson: Serileştirme metodları ekler
- copyWith: Immutable güncellemeler için copyWith metodu ekler
- Required parameters: Constructor parametrelerini
requiredyapar - Types only: Sadece alan tanımları oluşturur (metodsuz)
- Data class: Değer eşitliği için == ve hashCode override eder
- Use final: Alanları
-
Generate: Butona tıklayarak kodu oluşturun
-
Kopyala: Sağ üst köşedeki kopyala butonuna tıklayarak kodu panoya kopyalayın
Giriş JSON:
{
"name": "John Doe",
"age": 30,
"email": "john@example.com",
"address": {
"street": "123 Main St",
"city": "New York"
}
}Çıktı (tüm seçenekler varsayılan):
class User {
final String? name;
final int? age;
final String? email;
final Address? address;
User({
this.name,
this.age,
this.email,
this.address,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
email: json['email'],
address: json['address'] != null ? Address.fromJson(json['address']) : null,
);
}
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
'email': email,
'address': address?.toJson(),
};
}
}
class Address {
final String? street;
final String? city;
Address({
this.street,
this.city,
});
factory Address.fromJson(Map<String, dynamic> json) {
return Address(
street: json['street'],
city: json['city'],
);
}
Map<String, dynamic> toJson() {
return {
'street': street,
'city': city,
};
}
}lib/
├── main.dart # Uygulama giriş noktası
├── models/
│ ├── generation_options.dart # Kod üretim seçenekleri modeli
│ └── field_info.dart # Alan bilgisi modeli
├── services/
│ ├── type_detector.dart # Tip algılama servisi
│ ├── json_parser.dart # JSON parsing servisi
│ └── dart_generator.dart # Dart kod üretici servisi
├── widgets/
│ ├── json_input_panel.dart # Giriş paneli widget'ı
│ ├── options_panel.dart # Seçenekler paneli widget'ı
│ └── output_panel.dart # Çıktı paneli widget'ı
└── screens/
└── converter_screen.dart # Ana dönüştürücü ekranı
bool,int,double,Stringgibi primitive tipler otomatik algılanırList<T>tipleri dizideki ilk elemana göre belirlenir- Nested objeler için otomatik sınıf isimleri üretilir (field adından PascalCase'e dönüştürme)
- 2 boşluk girintileme kullanılır
- Ana sınıf en üstte, nested sınıflar alfabetik sırada altta gösterilir
- Null-safety uyumlu kod üretilir
StringBufferile verimli string birleştirme
- Boş diziler →
List<dynamic>olarak işlenir - Mixed type diziler →
List<dynamic>olarak işlenir - Null değerler → nullable olarak işaretlenir
- Geçersiz JSON → Kullanıcıya hata mesajı gösterilir
Katkılarınızı bekliyoruz! Lütfen bir issue açın veya pull request gönderin.
Bu proje MIT lisansı altında lisanslanmıştır.
Berkay Çaylı
Not: Bu uygulama Flutter web, macOS, Windows, Linux platformlarında çalışabilir.