如何禁用/启用 jackson SerializationFeature.WRAP_ROOT_VALUE? - java

我正在使用JSONAPI,因此我需要包装一些类,但不是所有类,例如:

{"users": {"aKey": "aValue"}} // wrapped.
{"aKey": "aValue"} // not wrapped.

有没有办法动态地或从类本身禁用此功能?,

我尝试这样:

  • https://stackoverflow.com/a/27688284/255463,永远不会调用此类。
  • @JsonRootName(value =“”),也不起作用。
  • 要包装/解开,我正在这样做:

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
    objectMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
    objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    
    JacksonConverterFactory jacksonConverterFactory = JacksonConverterFactory.create(objectMapper);
    
    OkHttpClient okHttpClient = new OkHttpClient();
    okHttpClient.interceptors().add(new LoggingInterceptor());
    
    Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .client(okHttpClient)
                .addConverterFactory(jacksonConverterFactory)
                .build();
    

    我需要一些POJO禁用该功能,这可能吗?

    谢谢。

    参考方案

    目前没有。在FasterXML/jackson-databind#1022下跟踪
    解决方法是,您可以创建两个不同的改造实例,其中一个实例启用了root启用的转换器工厂,另一个实例没有启用。

    YAML Jackson-映射Integer属性时出现NullPointerException - java

    杰克逊2.6.5我尝试将YAML文件映射到包含Integer属性的POJO,当它读取数字属性时会抛出: com.fasterxml.jackson.databind.JsonMappingException :(为java.lang.NullPointerException)有趣的是,如果我单引号文件中的数字属性,它将解析它们很好(我想它将字符串转换为整数)…

    Jackson:使用不同的属性名称序列化/反序列化 - java

    我有这个POJO:public class SetPoint { private String tagName; //more fields //getters and setters } 我从REST API获取SetPoints,对它们进行处理,然后再次发送。问题是我想从JSON反序列化SetPoint,例如:{ "tagnameOpc…

    无法使用crontab访问jarfile - java

    我有两个要使用crontab运行的jar文件。假设有一个A和B jarfile。当我想为A jarfile运行crontab时,crontab可以正常工作。但是,当我要运行B jarfile时,crontab无法访问jarfile。哪里可能出问题?问题出在jarfile还是crontab设置上?这是我的crontab设置0 12,14 * * * root …

    如何删除杰克逊反序列化的未知枚举键? - java

    我有一个Map<Alert, Boolean>映射,其中填充了相应的JSON:{ "BUTTON": true, "UNKNOWN": false } 我发现我可以将DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL的Jackson配置为true,…

    如何将Jackson的TypeReference与泛型一起使用? - java

    对于json映射,我使用以下方法:public static <T> T mapJsonToObject(String json, T dtoClass) throws Exception { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(json, new T…