JSON bilan ishlash (Jackson)
Daraja: O'rta
API'lar ma'lumotni JSON'da qaytaradi. Jackson `ObjectMapper` orqali JSON matnni Java obyektiga (deserializatsiya) va aksincha (serializatsiya) aylantiradi. Model klass maydonlari JSON kalitlariga mos bo'lishi kerak; mos kelmasa `@JsonProperty` bilan bog'lanadi.
Tushuntirish
API'lar ma'lumotni JSON'da qaytaradi. Jackson `ObjectMapper` orqali JSON matnni Java obyektiga (deserializatsiya) va aksincha (serializatsiya) aylantiradi. Model klass maydonlari JSON kalitlariga mos bo'lishi kerak; mos kelmasa `@JsonProperty` bilan bog'lanadi.
Kod misoli
ObjectMapper mapper = new ObjectMapper();
// JSON -> obyekt
Talaba t = mapper.readValue(json, Talaba.class);
// obyekt -> JSON
String out = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t);
// Ro'yxat
List<Talaba> ro = mapper.readValue(json, new TypeReference<List<Talaba>>() {});
// Notanish maydonlarga e'tibor bermaslik
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// Faqat kerakli maydonni olish
JsonNode root = mapper.readTree(json);
String ism = root.path("user").path("name").asText();
Keng tarqalgan xatolar
- UnrecognizedPropertyException — JSON'da modelda yo'q maydon bor. FAIL_ON_UNKNOWN_PROPERTIES=false qil.
- Bo'sh konstruktorsiz model — Jackson obyektni yarata olmaydi (yoki Lombok @NoArgsConstructor qo'sh).
Mashqlar
- HttpClient bilan olingan JSON javobni model klassga aylantir.
- Ichma-ich (nested) JSON'dan readTree bilan bitta chuqurdagi qiymatni ol.
Teglar: json, jackson, api