杰克逊 - 如何在运行时找到活动的JsonView

时间:2015-09-24 01:32:22

标签: jackson json-view

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

我目前的计划 创建自定义序列化程序,在序列化期间将调用它序列化的对象的setJsonView(类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...
  }

}

1 个答案:

答案 0 :(得分:3)

使用方法Error: upstream prematurely closed connection while reading response header from upstream 可以通过上下文对象(SerializerProviderDeserializationContext)访问当前活动视图。