crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
JSON ve Java: Veri Dönüşümünün Ustaları
1. Temel Kavramlar: Serialization ve Deserialization
Serialization (Serileştirme): Bir Java nesnesini, ağ üzerinden gönderilebilir bir metin formatı olan JSON'a çevirme işlemidir.
Deserialization (Ters Serileştirme): Gelen bir JSON metnini, Java içinde kullanabileceğimiz bir nesneye dönüştürme işlemidir.
2. Jackson: Kurumsal Dünyanın Standardı
Jackson, Spring Boot'un varsayılan JSON kütüphanesidir. Çok hızlıdır, karmaşık veri yapılarını mükemmel yönetir ve geniş bir notasyon desteği sunar.
Örnek Kullanım (ObjectMapper):
Java:
ObjectMapper mapper = new ObjectMapper();
Kullanici user = new Kullanici("Can", 25);
// Java Objesini JSON'a çevirme
String json = mapper.writeValueAsString(user);
// JSON'u Java Objesine çevirme
Kullanici donusenUser = mapper.readValue(json, Kullanici.class);
Önemli Notasyonlar:
@JsonProperty("user_name"): JSON'daki alan adı ile Java'daki değişken adı farklıysa bunları eşleştirir.
@JsonIgnore: Belirli bir alanın (örneğin şifre) JSON'a dahil edilmesini engeller.
3. GSON: Google'ın Hafif ve Şık Çözümü
Google tarafından geliştirilen GSON, kullanımı inanılmaz basit ve hafif bir kütüphanedir. Özellikle küçük ve orta ölçekli projelerde veya Android geliştirmede sıkça tercih edilir.
Örnek Kullanım (Gson):
Java:
Gson gson = new Gson();
Urun urun = new Urun("Laptop", 15000);
// Obje -> JSON
String jsonStr = gson.toJson(urun);
// JSON -> Obje
Urun yeniUrun = gson.fromJson(jsonStr, Urun.class);
4. Jackson vs. GSON Karşılaştırması
| Özellik | Jackson | GSON |
|---|---|---|
| Performans | Çok yüksek (Büyük verilerde lider). | Hızlı, ama çok büyük dosyalarda geride kalabilir. |
| Kullanım Kolaylığı | Biraz daha karmaşık yapılandırma. | Çok basit ve sezgisel. |
| Spring Boot | Varsayılan olarak gelir. | Harici olarak eklenmelidir. |
| Esneklik | Çok geniş (XML, YAML desteği de var). | Daha kısıtlı ama yeterli. |
5. JSON İşlemlerinde Dikkat Edilmesi Gerekenler
Boş Constructor: Her iki kütüphane de nesneyi oluştururken parametresiz bir "boş constructor"a ihtiyaç duyar. (Lombok kullanıyorsan @NoArgsConstructor eklemeyi unutma!)
Naming Strategy: Java'da camelCase (değiskenAdi) kullanılırken, JSON dünyasında genellikle snake_case (degisken_adi) tercih edilir. Kütüphane ayarlarından bunu otomatiğe bağlayabilirsiniz.
Tarih Formatları: Tarih (Date/LocalDateTime) alanları JSON'a çevrilirken varsayılan olarak karmaşık sayılar dönebilir. @JsonFormat ile bunu yyyy-MM-dd gibi okunabilir hale getirmelisiniz.
Sonuç
Eğer Spring Boot ekosistemindeysen Jackson senin en iyi dostundur. Ancak bağımsız, küçük bir araç geliştiriyorsan veya "tek satırda işimi halledeyim" diyorsan GSON pratikliğiyle öne çıkar. Her iki kütüphane de seni manuel metin parçalama (string parsing) derdinden kurtarır.