Jackson - 如何在运行时找到活动的 JsonView

Jackson - how to find active JsonView at runtime

我有 UI 包装 JPA 实体的对象,在那个 UI 对象的构造函数中,我延迟加载了一些属性。在同一个构造函数中,我需要知道什么 JsonView 当前处于活动状态,所以我不会延迟加载一些不需要的字段,如果说它是列表视图的话。 有没有办法从构造函数中找出运行时当前活动的 JsonView。或者有没有其他方法可以实现我上面描述的。

我目前的计划 创建自定义序列化程序,在序列化期间将调用它序列化的对象的 setJsonView(Class jsonView) 。我所有序列化的对象都必须支持该方法。在那个 metid 中,我可以根据现在已知的 json 视图进行延迟加载。像这样:

public class JsonViewSerializer extends JsonSerializer<BaseSerializableEntity> {

  @Override
  public void serialize(BaseSerializableEntity value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
    value.setJsonView(provider.getSerializationView());
    // need to pass serialization to base class...
  }

}

当前活动视图可通过上下文对象(SerializerProviderDeserializationContext)使用方法 getActiveView().

访问