Java
Liste ve Map serileştirme
List ve Map yapısını JSON'a çevirmeyi öğrenirsin.
Liste serileştirme
Bir List<User> nesnesini yapısal metne çevirmek için yine writeValueAsString kullanılır. Çıktı bir metin dizisidir: [{"name":"Ayşe","age":30},{"name":"Mehmet","age":25}].
Jackson, koleksiyonların tür bilgisini silinmesi (type erasure) nedeniyle readValue'da ek bir TypeReference ister: mapper.readValue(text, new TypeReference<List<User>>(){}). Bu anonim sınıf, generic tür bilgisini çalışma zamanında taşır.
Map serileştirme
Map<String, Integer> gibi bir harita yapısal metin nesnesine çevrilir: anahtarlar metin anahtarı, değerler metin değeri olur. Map<String, User> iç içe nesneler üretir. Okuma da TypeReference<Map<String, User>>() ile yapılır.
Jackson, List ve Map için ayrı bir kod yazmaya gerek bırakmaz; aynı writeValueAsString ve readValue metotları kullanılır. Tür güvenliği TypeReference ile sağlanır.
Uygulama User listesini yapısal metne çevir
record User(String name, int age) {} tanımla. main içine throws Exception ekle. ObjectMapper mapper = new ObjectMapper(); oluştur, List<User> users = new ArrayList<>(); oluştur, users.add(new User("Ayşe", 30)); ve users.add(new User("Mehmet", 25)); ekle. String text = mapper.writeValueAsString(users); ile metin üret ve System.out.println(text); yazdır.
Örnek çözümü göster
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
import java.util.ArrayList;
record User(String name, int age) {}
public class Main {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
List<User> users = new ArrayList<>();
users.add(new User("Ayşe", 30));
users.add(new User("Mehmet", 25));
String text = mapper.writeValueAsString(users);
System.out.println(text);
}
}
Kendini test et
-
Liste tür başvurusunu tamamla
mapper.readValue(text, new ____<List<User>>() {});
Cevabı göster
mapper.readValue(text, new TypeReference<List<User>>() {});
-
List<User> yapısal metne çevrildiğinde ne olur?
- Metin nesnesi
- Metin dizisi
- Hata fırlatır
- Boş dize
Cevabı göster
Metin dizisi — List metin dizisine ([...]) çevrilir.
-
Koleksiyon serileştirme kavramlarını eşleştir
- List<User>
- Metin dizisine çevrilir
- Map<String, User>
- Metin nesnesine çevrilir
- TypeReference
- Generic tür bilgisi
- writeValueAsString
- Ortak serileştirme metodu
Sıradaki ders: Özet - Serileştirme