我想要的是有条件地为类的对象使用默认BeanSerializer:
class MyCustomSerializer extends StdSerializer<AbstractEntity> {
public MyCustomSerializer() {
super(AbstractEntity.class);
}
@Override
public void serialize(AbstractEntity o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (someCondition()) {
serializeNormalWay(); //how?
} else {
//custom serialization
}
}
}
我曾经尝试过做这样的事情:
serializerProvider.defaultSerializeValue(o, jsonGenerator);
但是这调用MyCustomSerializer的方法,我有永无止境的递归。我怎么能得到适当的序列化对象,我可以用普通bean序列化?
这需要更复杂的设置:您需要让Jackson创建一个序列化程序,然后接管,而不是直接重写要使用的序列化程序。这可以通过注册BeanSerializerModifier
(通过模块
),方法修改序列化程序(…)
。您将获得将要使用的默认序列化程序,您可以构造自定义序列化程序,并传递该默认序列化程序。
问题内容: 我想要的是对类的对象有条件地使用默认BeanSerializer: 我试图做这样的事情: 但这调用了MyCustomSerializer的方法,而且我永无止境地递归。如何获得可以用于普通bean序列化的适当的Serializer对象? 问题答案: 这需要更复杂的设置:您需要让Jackson创建一个,然后接管,而不是直接覆盖要使用的序列化器。这可以通过注册(via )方法来完成。将为您提
我有通过WCF(servicecontract接口、dataContracts等)从服务器检索数据应用程序 我有对象: 我将DataRow中字典填充为(列名)-->(列中的值) DataRow中的某些单元格可以为空。字典中具有所有非空值的对象将正确地序列化和反序列化。但如果值为null,则服务只需停止序列化而不会出现任何错误。它并没有停止工作:我的应用程序仍然试图将请求重复到service,而我在
我在Jackson的自定义反序列化程序中有一个问题。我想访问默认序列化程序来填充我要反序列化到的对象。在填充之后,我将执行一些自定义操作,但首先我要使用默认的Jackson行为反序列化对象。 这是我现在有的代码。 我需要的是一种初始化默认反序列化器的方法,这样我就可以在开始我的特殊逻辑之前预填充我的POJO。 当从自定义反序列化程序内调用deserialize时,无论我如何构造序列化程序类,该方法
我想有条件地序列化一个字段。我想出了如何有条件地忽略带有 但我真正想做的是编辑字段。所以如果我有 我明白了 字段2被正确忽略。但我真正想要的是 我还有一个注释, 所以我想做的是把它们结合起来。因此,如果一个字段有特殊的注释,并且我正在使用我的内省器,只有在那时,我才想编辑该字段。否则,该字段应正常序列化。
我有一门课像 我想在我的Web服务中序列化IHideable列表;但是过滤掉任何将隐藏字段设置为true的对象。 基本上给出了一个物体列表,比如 我希望输出为 我尝试了以下实现 但是编写的writeString方法是特定于Address类的。当我在那里使用writeObject时,它抛出stackoverflow异常。我可以使用一些通用writeObject方法来编写实现IHideable()的任
问题内容: 是否可以替换WCF的默认JSON序列化(我目前正在测试行为),并作为MIME类型传递。特别是,我不喜欢默认情况下每个属性都是键/值对,例如: 我仅将服务用于启用JSON的端点(使用jQuery + WCF请求数据)。 问题答案: 您可以使用消息格式化程序来更改用于处理JSON的序列化程序。https://docs.microsoft.com/zh- cn/archive/blogs/c