[英]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.