Com.fasterxml.jackson.databind.ObjectMapper kullanarak değişmez bir nesneyi serileştirmek ve serisini kaldırmak istiyorum.
Değişmez sınıf şuna benzer (yalnızca 3 dahili özellik, alıcılar ve yapıcılar):
public final class ImportResultItemImpl implements ImportResultItem {
private final ImportResultItemType resultType;
private final String message;
private final String name;
public ImportResultItemImpl(String name, ImportResultItemType resultType, String message) {
super();
this.resultType = resultType;
this.message = message;
this.name = name;
}
public ImportResultItemImpl(String name, ImportResultItemType resultType) {
super();
this.resultType = resultType;
this.name = name;
this.message = null;
}
@Override
public ImportResultItemType getResultType() {
return this.resultType;
}
@Override
public String getMessage() {
return this.message;
}
@Override
public String getName() {
return this.name;
}
}
Ancak bu birim testini çalıştırdığımda:
@Test
public void testObjectMapper() throws Exception {
ImportResultItemImpl originalItem = new ImportResultItemImpl("Name1", ImportResultItemType.SUCCESS);
String serialized = new ObjectMapper().writeValueAsString((ImportResultItemImpl) originalItem);
System.out.println("serialized: " + serialized);
//this line will throw exception
ImportResultItemImpl deserialized = new ObjectMapper().readValue(serialized, ImportResultItemImpl.class);
}
Bu istisnayı anlıyorum:
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class eu.ibacz.pdkd.core.service.importcommon.ImportResultItemImpl]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)
at [Source: {"resultType":"SUCCESS","message":null,"name":"Name1"}; line: 1, column: 2]
at
... nothing interesting here
Bu istisna benden varsayılan bir kurucu oluşturmamı istiyor, ancak bu değişmez bir nesne, bu yüzden ona sahip olmak istemiyorum. Dahili nitelikleri nasıl belirlerdi? API kullanıcısının tamamen kafasını karıştırır.
Öyleyse sorum şu: Varsayılan kurucu olmadan değişmez nesneleri bir şekilde de / serileştirebilir miyim?