Вы помещаете десериализатор в объект Java, в который хотите отобразить json:
@JsonDeserialize(using = PropertyValueDeserializer.class)
public class PROPERTY_VALUE implements Serializable{
и затем в десериализаторе вы можете, например, сделать:
@Override
public PROPERTY_VALUE deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
String tmp = jsonParser.getText(); // {
jsonParser.nextToken();
String key = jsonParser.getText();
jsonParser.nextToken();
String value = jsonParser.getText();
jsonParser.nextToken();
tmp = jsonParser.getText(); // }
PROPERTY_VALUE pv = new PROPERTY_VALUE(key,value);
return pv;
}
Если вы не хотите использовать аннотации, вам нужно передать мапперу DeserializerProvider
, который может предоставить правильный десериализатор для данного типа.
mapper.setDeserializerProvider(myDeserializerProvider);
Для конструкторов - конечно, вы можете создать целевой класс, вызвав фабрику в десериализаторе:
String value = jsonParser.getText();
jsonParser.nextToken();
tmp = jsonParser.getText(); // }
MyObject pv = MyObjectFactory.get(key);
pv.setValue(value);
return pv;
}
Но тогда я мог неправильно понять ваше обновление