kir*_*uba 11 java spring jackson json-view
我有一个类,其中包含另一个类的集合.
class A{
@JsonView(VerboseViewA.Minimal.class)
String field1;
@JsonView(VerboseViewA.Complete.class)
String field2;
@JsonView(VerboseViewA.Complete.class)
Collection<B> bEntities;
}
class B{
@JsonView(VerboseViewB.Minimal.class)
String field2;
@JsonView(VerboseViewB.Complete.class)
String field3;
}
Run Code Online (Sandbox Code Playgroud)
当我使用VerboseViewA.Complete序列化A类时,我希望使用VerboseViewB.Minimal序列化集合bEntities.
有没有办法实现它?
这解决了我的问题.我不确定是否有更好的方法来解决这个问题.
class A{
@JsonView(VerboseViewA.Minimal.class)
String field1;
@JsonView(VerboseViewA.Complete.class)
String field2;
@JsonView(VerboseViewA.Complete.class)
Collection<B> bEntities;
}
class B{
@JsonView({VerboseViewA.Complete.class,VerboseViewB.Minimal.class})
String field2;
@JsonView(VerboseViewB.Complete.class)
String field3;
}
Run Code Online (Sandbox Code Playgroud)
在与同样的问题作斗争之后,我提出了这个解决方案:
class A
{
@JsonView(VerboseViewA.Minimal.class)
String field1;
@JsonView(VerboseViewA.Complete.class)
String field2;
@JsonView(VerboseViewA.Complete.class)
@JsonSerialize(using = VerboseMinimalSerializer.class)
Collection<B> bEntities;
}
class B
{
@JsonView(VerboseViewB.Minimal.class)
String field2;
@JsonView(VerboseViewB.Complete.class)
String field3;
}
Run Code Online (Sandbox Code Playgroud)
现在,当使用 VerboseViewA.Complete.class 序列化 A 类的实例时,将包含 bEnitities 并使用自定义 VerboseMinimalSerializer 进行序列化,覆盖其 JsonView:
public class VerboseMinimalSerializer extends JsonSerializer<Object>
{
@Override
public void serialize(Object object, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException
{
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.setConfig(mapper.getSerializationConfig().withView(VerboseViewB.Minimal.class));
jsonGenerator.setCodec(mapper);
jsonGenerator.writeObject(object);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,此自定义序列化程序使用视图 VerboseViewB.Minimal.class。
| 归档时间: |
|
| 查看次数: |
5067 次 |
| 最近记录: |