У меня есть класс, экземпляр которого Джексон не смог создать из JSON.
Класс:
public class Device extends Entity {
@JsonProperty("CID") @NonNull @Getter(onMethod_ = {@JsonProperty("CID")}) private String CID;
@JsonProperty("RID") @NonNull @Getter(onMethod_ = {@JsonProperty("RID")}) private String RID;
@NonNull @Getter private String name;
@NonNull @Getter private List<DeviceProperty> properties;
@Transient @JsonIgnore @Setter(onMethod_ = {@JsonIgnore}) @Getter(onMethod_ = {@JsonIgnore}) private Room room;
@PersistenceConstructor
public Device(String CID, String RID, String name, List<DeviceProperty> properties) {
this.CID = CID;
this.name = name;
this.RID = RID;
this.properties = properties;
}
JSON:
{"name":"HEKHEK","properties":[{"index":0,"name":"On/Off","mode":"O","type":{"data":"string","ui":"field","minValue":null,"maxValue":null,"values":null}}],"CID":"test","RID":"testRoom2"}
И это возвращает исключение:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `symphony.bm.cache.devices.entities.Device` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (String)"{"name":"HEKHEK","properties":[{"index":0,"name":"On/Off","mode":"O","type":{"data":"string","ui":"field","minValue":null,"maxValue":null,"values":null}}],"CID":"test","RID":"testRoom2"}"; line: 1, column: 2]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1589) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1055) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205) ~[jackson-databind-2.10.2.jar:2.10.2]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3173) ~[jackson-databind-2.10.2.jar:2.10.2]
at symphony.bm.services.registry.ServicesController.getDeviceObject(ServicesController.java:167) ~[classes/:na]
at symphony.bm.services.registry.ServicesController.register(ServicesController.java:69) ~[classes/:na]
... 50 common frames omitted
В чем проблема? Кроме того, я использую аннотации Spring Data API и Lombok для своего класса, это мешает Джексону? Спасибо.