gpt4 book ai didi

java - 如何使用@JacksonInject(useInput= OptBoolean.FALSE)

转载 作者:行者123 更新时间:2023-12-02 06:09:18 25 4
gpt4 key购买 nike

关于useInput,我读过一些文章

"useInput: It is Boolean and decides whether matching input value is used for annotated property or not. If the value is false, input value will be ignored. If the value is true, input value will override injected value. Default value of useInput is default that has true value."

我的问题:

“输入值”和“注入(inject)值”是什么意思?

考虑下面的代码:

public class Writer {
private Integer id;
@JacksonInject(useInput = OptBoolean.TRUE)
private String name;

public static void main(String[] args) throws IOException {
String jsonData = "{\"id\":111,\"name\":\"Ju\"}";
ObjectMapper mapper = new ObjectMapper();
InjectableValues.Std injectableValues = new InjectableValues.Std();
injectableValues.addValue(String.class, "Default Value");
mapper.setInjectableValues(injectableValues);
Writer writer = mapper.readValue(jsonData, Writer.class);
System.out.println(writer);
}
....get set....
}

反序列化后,“name”属性的值始终为“Ju”,无论OptBoolean是TRUE还是FALSE,那么“OptBoolean”是什么意思?以及如何使用它?

最佳答案

当 Jackson 向属性(property)注入(inject)值(value)时,它可以根据两个因素确定注入(inject)的值(value):

  1. 属性的类型
  2. 任意字符串 ID

这样,您就可以决定将所有String属性都注入(inject)“默认值”,但将注入(inject)一个特定的String属性与“具体值”。为此,您将 String id 指定为注释的值,并使用 injectableValues.addValue()接收 String 作为第一个参数(不是 Class)

UseInput arg 适用于虽然您指定注释的值,但您可以决定是使用还是忽略它(恢复到基于类型的注入(inject))的情况,这在您这样做时很有用无法访问源代码(例如,在第 3 方库中),然后您可以使用 Jackson 的 mixin 功能来覆盖注释

关于java - 如何使用@JacksonInject(useInput= OptBoolean.FALSE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55922600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com