将字段设置为共享值

时间:2018-04-11 15:34:18

标签: jackson jackson-databind

我有一个看起来像这样的课程:

class Data {
    @JsonCreator
    public Data(@JsonProperty("string") String s, Widget w) {
         string = s;
         widget = w;
    }
    String string;
    Widget widget;
}

我想从JSON中反序列化它,如

{
    "string": "string value"
}

反序列化时,我想将widget设置为共享实例。我在创建对象映射器时有这个实例,但我看不出如何告诉Jackson使用这个实例。

我看到JsonDeserialize.getNullValuegetEmptyValue,但这些似乎是用于处理

{
   "string": "string value", "widget": null 
}

这不是我的JSON。

1 个答案:

答案 0 :(得分:1)

您可以尝试@JacksonInject

public class Data {

    @JacksonInject
    public Widget widget;

    ...
}   

然后使用如下:

Widget widget = ...

InjectableValues injectable = new InjectableValues.Std().addValue(Widget.class, widget);
Data data = new ObjectMapper().reader(injectable).forType(Data.class).readValue(json);