簡體   English   中英

從配置動態讀取@JsonProperty

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM