将字段设置为共享值
Set field to a shared value
我有一个 class 看起来像这样:
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.getNullValue
和 getEmptyValue
,但它们看起来像是用来处理的
{
"string": "string value", "widget": null
}
这不是我拥有的JSON。
你可以试试 @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);
我有一个 class 看起来像这样:
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.getNullValue
和 getEmptyValue
,但它们看起来像是用来处理的
{
"string": "string value", "widget": null
}
这不是我拥有的JSON。
你可以试试 @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);