MyPojo
JSON'dan seri durumdan çıkarmak istediğim bir Java sınıfım var. Seriyi kaldırma işleminde MyPojoDeMixIn
bana yardımcı olması için özel bir MixIn sınıfı yapılandırdım . uygun alıcılar ve ayarlayıcılarla birleştirilmiş MyPojo
yalnızca int
ve String
örnek değişkenlerine sahiptir . MyPojoDeMixIn
şuna benzer:
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
Test istemcimde aşağıdakileri yapıyorum, ancak elbette derleme zamanında çalışmıyor çünkü JsonMappingException
bir tür uyuşmazlığı ile ilgili bir durum var.
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
ArrayList<MyPojo>
İçinde yalnızca bir "Response" nesnesi olan bir "Response" nesnesi oluşturarak bu sorunu hafifletebileceğimin farkındayım , ancak o zaman geri dönmek istediğim her tür için bu biraz işe yaramaz nesneleri yaratmak zorunda kalacağım.
Ayrıca çevrimiçi olarak JacksonInFiveMinutes'e baktım, ancak konuyla ilgili konuları ve sorunumlaMap<A,B>
nasıl ilişkili olduğunu anlamakta çok zorlandım . Söyleyemezseniz, Java'da tamamen yeniyim ve Obj-C geçmişinden geliyorum. Özellikle belirtiyorlar:
POJO'lara ve "basit" türlere bağlanmaya ek olarak, ek bir değişken daha vardır: genel (tiplenmiş) kapsayıcılara bağlanma. Bu durum, Collection.class (derlenmeyen) gibi bir şeyi kullanmanızı engelleyen sözde Tür Silme (jenerikleri biraz geriye dönük olarak uygulamak için Java tarafından kullanılır) nedeniyle özel işlem gerektirir.
Dolayısıyla, verileri bir Haritaya bağlamak istiyorsanız, kullanmanız gerekecek:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
Doğrudan ürün serisini nasıl kaldırabilirim ArrayList
?