I found one way that uses JsonSerializer as follows:
public class PropertyValueSerializer extends JsonSerializer<Foo> { @Override public void serialize(Foo property_value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); jsonGenerator.writeFieldName(property_value.getKey()); jsonGenerator.writeString(property_value.getValue()); jsonGenerator.writeEndObject(); }
The Foo class should know about this:
@JsonSerialize(using = PropertyValueSerializer.class) public class Foo {
Deserializing is very similar:
public class PropertyValueDeserializer extends JsonDeserializer<PROPERTY_VALUE> { @Override public Foo deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String tmp = jsonParser.getText();
And this should also be annotated in the Foo class:
@JsonSerialize(using = PropertyValueSerializer.class) @JsonDeserialize(using = PropertyValueDeserializer.class) public class Foo implements Serializable{
Heiko rupp
source share