我想配置一个杰克逊解串器,根据注释字段的目标类型采取不同的行为。创建一个类型意识的杰克逊解串器
public class Car {
@JsonSerialize(using=IdSerializer.class)
@JsonDeserialize(using=IdDeserializer.class)
String id
}
public class Bus {
@JsonSerialize(using=IdSerializer.class)
@JsonDeserialize(using=IdDeserializer.class)
Id id
}
杰克逊串行知道从它被转换数据类型,所以这是工作:
public class IdSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator jsonGen, SerializerProvider provider) throws IOException {
// value is the annotated field class
if(value instanceof String)
jsonGen.writeObject(...);
else if (value instanceof Id)
jsonGen.writeObject(...);
else
throw new IllegalArgumentException();
}
}
杰克逊解串器似乎不知道目标类型分为它将数据转换:
public class IdDeserializer extends JsonDeserializer<Object> {
@Override
public Object deserialize(JsonParser jp, DeserializationContext context) throws IOException {
// what is the annotated field class?
}
}
您可以添加一些类型信息到序列化。 –
@KyleRenfro你能提供一个代码示例吗?谢谢。 –