Jackson 2'yi kullanarak, tek bir değer olarak nesneleri serileştirmek için jenerik yolunu arıyorum (daha sonra tekrar tek bir alana yerleştirerek bunları tekrar serileştirin) Her davayı ele almak için bir JsonSerializer/JsonDeserializer oluşturun. @JsonIdentityInfo ek açıklamaları oldukça yakındır, ancak işaretini bildiğim kadarıyla gözden kaçırır, her zaman tam olarak ilk nesnedeki nesneyi serileştirir.Jackson - seriyi JSON değeri olarak serileştirme/deserialize edin
Yapmak istediklerimin bir örneği. sınıflar Verilen: @JsonIdentityInfo ne yapar
{"orderNum":"11111", "customer":"99"}
{"orderNum":"11111", "customer":{"id":99}}
daha zor istemcide başa yapar:
class Customer {
Long id = 99;
String name = "Joe";
// Lots more properties
}
class Order {
String orderNum = "11111"
@WhateverAnnotationsINeedHereToDoWhatIWant
Customer customer;
}
ben Sipariş (Bana da mükemmel kabul olurdu) ya kadar seri hale getirmek istiyoruz -uzun (müşterinin müşteri kimliğini tam müşteri bilgisine nasıl eşleyeceğini bildiğini varsayabiliriz).
@JsonIgnoreProperties de gösterilen ikinci JSON için oldukça yakın gelebilir, ancak her şeyi hariç olmak istiyorum ama istediğim anlamına gelirdi.
Geri dönüşümü geri döndüğümde, yalnızca Müşterinin yalnızca "id" alanı ile başlatılmasını istiyorum.
Bunu, Jackson'ın geleneksel iç çamaşırlarına girmeden kaçırdığım herhangi bir sihir yolu var mı? Anlayabildiğim kadarıyla, JsonDeserializer/JsonSerializer ebeveyn hakkında hiçbir bağlamsal bilgiye sahip değil. Bu yüzden, bir @JsonValueFromProperty ("id") tipi Jackson Mix-in oluşturmanın kolay bir yolu yok gibi görünüyor. özel seri hale getirici/deserializer.
Herhangi bir fikir büyük takdir. Teşekkürler!
Teşekkürler Entegre Şeyler! Bu basit çözüm aslında benim için oldukça çalışkan görünüyor ve şu anda korkunç görünüyor;). Bir @JsonIgnorePropertiesExcept ("id") notunun yokluğunda, bunun iyi olacağını düşünüyorum. – jonc