java - 在自定义序列化程序 jackson 中配置 objectmapper?

标签 java json serialization jackson objectmapper

我为特定字段编写了一个 CustomSerializer。我在具有某些配置的 ObjectMapper 上调用自定义序列化程序,例如 WRAP_ROOT_VALUEPropertyNameStrategyInclusion.NON_NULL

现在在我的自定义序列化程序中,我需要所有这些属性,同时序列化我的自定义类,除了一个 (WRAP_ROOT_VALUE)。

public class CustomSerializer extends JsonSerializer<Object>{

    @Override
    public void serialize(Object obj, JsonGenerator jgen,
            SerializerProvider arg2) throws IOException,
            JsonProcessingException {
//.......
        jgen.writeObject(obj);
//...       
    }

所以我的 obj 在这里被序列化为我不想要的包装的根值。

由于某种原因我无法编辑我的 POJO。

如何在 CustomSerializer 中仅禁用 Objectmapper 的一个(或部分)属性???

最佳答案

获取ObjectMapper

来自自定义 JsonSerializer , 你可以得到 ObjectMapper使用:

ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());

设置ObjectMapper

您还可以定义一个新的 ObjectMapper在您的自定义范围内 JsonSerializer使用:

ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);

关于java - 在自定义序列化程序 jackson 中配置 objectmapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896345/

相关文章:

java - 类包装器和 Java 与 Objective-C 中的单例有什么区别?

c# - CamelCase JSON WebAPI 子对象(嵌套对象、子对象)

php - 更改服务器,并获取SyntaxError : JSON.parse: unexpected character parsererror

serialization - 如何保存/序列化 QVariant 即 QVector<int>

java - 将 Java 应用程序作为 *nix 守护程序或 Windows 服务运行的最佳方法?

java - 在远程服务器上托管 Java Web 应用程序

java - 如何获取appengine应用当前的服务器地址?

json - 如何使用 BASH 从 JSON 中提取特定文本

java - 将 byte[] 转换为 java 中用户定义的类

c# - 从数据库反序列化二进制数组 C#