我尝试反序列化包含以下结构的Json对象,但在反序列化过程中收到Jackson的错误,原因是包含Json对象的map中出现了null值。有没有一种方法可以反序列化这些值,并将它们作为null或空字符串放入Map中?
{
"id": "1"
"links: {
"a": "someLink"
"b": null
....
}
}
字符串
我用以下方式创建了一个不可变的:
@Value.Immutable
@JsonSerialize(as = ImmutableMyClass.class)
@JsonDeserialize(as = ImmutableMyClass.class)
public interface MyClass {
@JsonProperty("id")
String getId();
@JsonProperty("links")
Map<String, String> getLinks();
}
型
我将对象读入Java POJO如下:
List<MyClass> myClassList = objectMapper.readValue(jsonString, objectMapper.getTypeFactory.constructCollectionType(List.class, ImmutableMyClass.class))
型
错误代码:
com.fasterxml.jackson.databind.exc.ValueInstantiationException problem: null value in entry: b=null
型
2条答案
按热度按时间nhn9ugyo1#
也许可以尝试类似这样的东西(通过接口使用
@Value.Immutable
)字符串
或(不含
@Value.Immutable
)型
ttcibm8c2#
我刚刚用Jackson2.15.2版测试了你的测试用例,它工作得很好。我没有使用
Immutable
注解,也没有使用@JsonSerialize
和@JsonDeserialize
注解。下面是我的代码和输出:classMapHolder:
字符串
}
我的代码:
型
输出:
型
澄清:class
JsonUtils
来自我编写和维护的MgntUtils开源库。该类是Jacksonv 2.15.2中ObjectMapper
类的一个精简 Package 器。这是一个Javadoc for JsonUtils。该库可以作为Maven artifact from Maven Central或从GitHub获得(包括源代码和Javadoc)