Json'u polimorfik sınıflara serpiştirmenin basit bir örneğini yapmaya çalışıyorum. Sadece bu sınıf için JSON kullanarak tek alt sınıf için deserialization çalışırsanızJackson Dizi Olmayan Polimorfik Sınıfları Deserialize Edin
org.codehaus.jackson.map.JsonMappingException: Could not resolve type id 'aField' into a subtype of [simple type, class ...SubClassA]
, Başarılı, ama SubClassTestObject içinde birlikte iki sınıf koyduğumuzda, başarısız: seri kaldırma hatası ile başarısız olur. Bunu düzeltmek için bir fikrin var mı? Özel bir desperizer yazmam gerekiyor mu? İşte
{
"classA":{
"aField":"A",
"baseField":"baseA"
},
"classB":{
"baseField":"baseB",
"bField":"B"
}
}
benim sınıfları şunlardır: Burada
benim JSON olduğunu Düzenlemenizle sonra
@Test
public void testBoth() throws IOException, URISyntaxException {
ClassLoader classLoader = getClass().getClassLoader();
json = new String(Files.readAllBytes(Paths.get(classLoader.getResource("test/so-example.json").toURI())));
ObjectMapper mapper = new ObjectMapper();
mapper.registerSubtypes(SubClassA.class, SubClassB.class);
SubClassTestObject testObj = mapper.readValue(json, SubClassTestObject.class); //Fails here
SubClassA a = testObj.getA();
SubClassB b = testObj.getB();
assertTrue(a.getBaseField().equals("baseA"));
assertTrue(b.getBaseField().equals("baseB"));
assertTrue(a.getaField().equals("A"));
assertTrue(b.getbField().equals("B"));
}
Sorunun güncellenmesi ... – PunDefeated
Gelecekte, lütfen gönderilmeden önce lütfen sorunuzu gözden geçirin. Bu çok farklı bir senaryo. – Savior
Kötü, ilk cevabı gördükten sonra sorunlardan birinin ne olduğunu gördüm, düzeltdim ve başka bir konuya dönüştü. – PunDefeated