小编Dan*_*tra的帖子

如何在使用@JsonIdentityInfo时禁用对象引用?

嗨,当我使用JsonIdentityInfo时,例如@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class,property ="@ dataSet")

杰克逊将取代看起来像id的对象,如下面的那样.

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@dataSet")
Run Code Online (Sandbox Code Playgroud)

我也试过@JsonIdentityReference(alwaysAsId = true)

此注释强制对象替换为id.但我想禁用替换

我可以禁用此功能而不是用id替换.

json jackson

13
推荐指数
0
解决办法
839
查看次数

将空对象的 Jackson 反序列化为 Null

我被要求更改我们的 jackson 映射配置,以便我们反序列化(来自 JSON)的每个空对象都将反序列化为 null。

问题是我正在努力做到这一点,但没有任何运气。这是我们的ObjectMapper配置示例(和示例):

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_DATE_TIME));
javaTimeModule.addDeserializer(Instant.class, InstantDeserializer.INSTANT);
mapper.registerModule(javaTimeModule);
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
warmupMapper(mapper);

return mapper;
Run Code Online (Sandbox Code Playgroud)

我想过这样的事情:

mapper.configure(
    DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
Run Code Online (Sandbox Code Playgroud)

但它只适用于字符串。

恐怕使用自定义反序列化器对我没有帮助,因为我正在编写一个通用(适用于所有对象)映射器。所以我可能需要像委托人或后处理反序列化方法之类的东西。

所以对于 json like""或者{}我希望null在 java 中转换为(而不是空字符串或Object实例)。

java jackson deserialization

5
推荐指数
1
解决办法
7866
查看次数

标签 统计

jackson ×2

deserialization ×1

java ×1

json ×1