Jackson ObjectMapper在Windows和MacOS上的不同行为

Jackson ObjectMapper在Windows和MacOS上的不同行为,windows,macos,maven,spring-boot,jackson,Windows,Macos,Maven,Spring Boot,Jackson,我在Spring Boot 2/Maven项目中实现了以下测试: @Autowired private com.fasterxml.jackson.databind.ObjectMapper objectMapper; @Test public void testJSON() throws JsonParseException, JsonMappingException, IOException { String json = "{\"additionalDecisionGroupI

我在Spring Boot 2/Maven项目中实现了以下测试:

@Autowired
private com.fasterxml.jackson.databind.ObjectMapper objectMapper;

@Test
public void testJSON() throws JsonParseException, JsonMappingException, IOException {

    String json = "{\"additionalDecisionGroupId\":null,\"decisionNameFilterPattern\":null,\"filterQueries\":[{\"type\":\"RangeQuery\",\"characteristicId\":2,\"value\":null,\"optionHolder\":{\"optionId\":1,\"propertyHolders\":[{\"propertyId\":4,\"value\":[1,5]}],\"propertyOperator\":\"AND\"}}],\"sortCriteriaIds\":null,\"sortWeightCriteriaDirection\":null,\"sortTotalVotesCriteriaDirection\":null,\"sortCriteriaCoefficients\":null,\"sortCharacteristicId\":null,\"sortCharacteristicDirection\":null,\"sortDecisionPropertyName\":\"createDate\",\"sortDecisionPropertyDirection\":\"ASC\",\"excludeChildDecisionIds\":null,\"includeChildDecisionIds\":null,\"excludeCharacteristicIds\":null,\"includeCharacteristicIds\":null,\"includeChildDecisionOwnedByUserIds\":null,\"pageNumber\":0,\"pageSize\":100,\"persistent\":null,\"iso6391\":null}";

    DecisionAnalysisRequest request = objectMapper.readValue(json, DecisionAnalysisRequest.class);

    RangeQuery rangeQuery = (RangeQuery) request.getFilterQueries().iterator().next();

    assertNotNull(rangeQuery);
    assertNotNull(rangeQuery.getOptionHolder());
}
在Windows 10下,测试有时有效,但大部分时间由于
optionHolder=null
而失败。在相同来源的MacOS下,测试工作正常

这种行为的原因是什么?如何解决

已更新

这是我的错:

@JsonCreator
public RangeQuery(@JsonProperty("characteristicId") Long characteristicId, @JsonProperty("optionHolders") OptionHolder optionHolder, @JsonProperty("value") Object value) {
    super(characteristicId, value, StringUtils.EMPTY, optionHolder);
}
我错误地将
JsonProperty
命名为
optionHolder
,而不是正确的
optionHolder


但是为什么它能在MacOS上工作仍然是一个悬而未决的问题。

您可以配置
ObjectMapper
以包含空值<代码>objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)这可能有助于避免任何特定于平台的行为。感谢您的评论。我已经将
spring.jackson.default property inclusion=NON_NULL
添加到我的
应用程序中。properties
没有任何帮助。