[英]Read @JsonProperty dynamically from config
我正在开发一个使用Jackson注释的Spring引导应用程序。
我想从配置中读取@JsonProperty
值,而不是使用常量字符串。
JSON输入示例
{"s":12}
码
我想从我的配置中读取属性:
@JsonProperty("${myconfig.fieldAlias.stream}")
private Integer stream;
代替
@JsonProperty("s")
private Integer stream;
问题在使用config执行上述代码时:
变量“ s”未标识为流
除非我使用常量@JsonProperty("s")
,否则这是不希望的。
是否可以使用动态JsonProperty
值? 如果是这样,这样做的正确方法是什么?
给@JsonProperty
的名称必须是静态的。 您可以做的是通过实现自定义序列化程序来动态覆盖给定名称:
public static class StreamSerializer extends JsonSerializer<Integer> {
@Override public void serialize(Integer value, JsonGenerator jsonGenerator, SerializerProvider provider)
throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("s", your_dynamic_name_here);// dynamic field name
jsonGenerator.writeEndObject();
}
}
并像这样使用它:
@JsonProperty("s")
@JsonSerialize(using = StreamSerializer.class)
private Integer stream;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.