【发布时间】:2016-11-29 14:04:07
【问题描述】:
@JsonSerialize 和 JsonSerializer 实现的所有示例都是similar 到以下。
public class JodaDateTimeJsonSerializer extends JsonSerializer<DateTime> {
private static final String dateFormat = ("MM/dd/yyyy");
@Override
public void serialize(DateTime date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = DateTimeFormat.forPattern(dateFormat).print(date);
gen.writeString(formattedDate);
}
}
它有一个定义其运行时行为的类级变量。这不能在运行时通过配置更改。
如何将dateFormat 设置在可配置属性之上,同时在属性上使用@JsonSerialize(using = JodaDateTimeJsonSerializer.class)?
现在,我正在考虑将其设置为序列化程序实现上的静态非最终属性,该属性由运行时的应用程序在运行时设置。不能实现非常正确的实现。编辑:理想的解决方案将允许我〜注入〜(编辑:传入)只需要的配置到序列化程序中,而不是从某个全局检索配置。
注意:我不想为此属性创建新的数据类型(它们都是字符串),也不想创建自定义 bean 序列化程序(它们可以在任何地方的任何字符串属性上进行注释)。因此,我也不能使用SimpleModule::addSerializer(class, serializer) 方法,因为它们不应添加到所有 String 属性中。
【问题讨论】: