在 Jackson 构造函数中使用自定义对象

有没有办法为 Jackson 反序列化器提供来自“外部”(例如 DI 容器)的默认值,该默认值将在反序列化对象(在本例中为 tagRegistry)时使用?


  @JsonCreator

  public ExtractionRule(@JsonProperty("id") String id, 

                        TagRegistry tagRegistry) {

    this.id = id;

    this.tagRegistry = tagRegistry;

  }

我找不到一个简单的方法来做到这一点。


守着星空守着你
浏览 45回答 1
1回答

鸿蒙传说

你可以尝试@JacksonInject。将此成员添加到 ExtractionRule 类:@JacksonInject("tagRegistry")private TagRegistry tagRegistry;并在反序列化之前将 tagRegistry 注入到 ObjectMapper 中: InjectableValues.Std injectableValues = new InjectableValues.Std(); injectableValues.addValue("tagRegistry", tagRegistry); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setInjectableValues(injectableValues);我还没有尝试在构造函数中使用它,不确定这是否有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java