【问题标题】:How to serialize only fileds with public accessors with jackson 2.5.X?如何使用杰克逊 2.5.X 仅序列化具有公共访问器的字段?
【发布时间】:2015-02-04 10:45:19
【问题描述】:

我需要定义一个 ObjectMapper 全局序列化/反序列化对象,并且我只需要将带有公共 getter 和 setter 的字段进行序列化。

如果有类似的东西会很棒:

objectMapper.setVisibilityChecker(objectMapper.getSerializationConfig().getDefaultVisibilityChecker()
    .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
    .withGetterVisibility(JsonAutoDetect.Visibility.PUBLIC_ONLY)
    .withIsGetterVisibility(JsonAutoDetect.Visibility.PUBLIC_ONLY)
    .withSetterVisibility(JsonAutoDetect.Visibility.PUBLIC_ONLY)
    .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

但是用“and”而不是“or”。

有什么想法吗?

PS:我可以用注释来做,但我需要全局做。

提前致谢。

【问题讨论】:

    标签: java serialization jackson


    【解决方案1】:

    看到问题的成功,我不得不自己寻求解决方案。这不是一个理想的解决方案,但对我来说已经足够了。

    private void configureObjectMapper(MappingJackson2HttpMessageConverter converter) {
            final ObjectMapper objectMapper = new ObjectMapper();
            // Only serialize fields with both public accessors
            objectMapper.configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true);
            // If a field is not found, then ignore it and continue processing, with no fail
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            converter.setObjectMapper(objectMapper);
        }
    

    问候!

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 2012-12-27
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多