@Override public void serialize(Ref value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { Object obj = value.getValue(); if (obj != null) { // writeObject() abandons the serialization context and breaks @JsonView //jgen.writeObject(obj); // Tatu says that this is better: provider.defaultSerializeValue(value.getValue(), jgen); } else { jgen.writeString(value.key().getString()); } } }
@Override public void serialize( Ref ref, JsonGenerator jgen, SerializerProvider provider ) throws IOException { jgen.writeStartObject(); boolean includeNull = Include.NON_NULL != provider.getConfig().getDefaultPropertyInclusion().getValueInclusion(); if ( ref.key() != null || includeNull ) { jgen.writeObjectField( RefConstant.KEY, ref.key() ); } if ( ref.getValue() != null || includeNull ) { jgen.writeObjectField( RefConstant.VALUE, ref.getValue() ); } jgen.writeEndObject(); }
@Override protected void doSerialize( JsonWriter writer, Ref<T> ref, JsonSerializationContext ctx, JsonSerializerParameters params ) { writer.beginObject(); writer.name( RefConstant.KEY ); KeyJsonSerializer.getInstance().serialize( writer, ref.getKey(), ctx, params ); writer.name( RefConstant.VALUE ); serializer.serialize( writer, ref.getValue(), ctx, params ); writer.endObject(); } }