ObjectMapper.readValue可以返回null值吗?

16

Jackson库中的ObjectMapper.readValue返回null值。在什么情况下它会返回null对象?从代码库中发现。

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.9</version>
</dependency>
您可以浏览ObjectMapper类以深入了解更多细节。

4
它返回了空值,你看到它返回了 null?你试图反序列化什么? - Sotirios Delimanolis
2
所以你有源代码的访问权限吗?你是否跟随并查看它何时返回“null”? - Sotirios Delimanolis
3
您应该始终在问题中添加信息,以便每个人都可以轻松获取它,无需付出任何努力。 - YoungHobbit
2个回答

14

readValue() 用于解析 JSON 格式数据,当输入的 JSON 值为 null 时,该方法返回 null。 但是,在其他情况下,如缺少输入,该方法会抛出异常;默认情况下,没有反序列化程序会返回 null


嗨@StaxMan,你有例子吗?我正在尝试模拟它,例如:public static void main(String[] args) throws JsonMappingException, JsonProcessingException { ObjectMapper o = new ObjectMapper(); String s = "{\"id\":null}"; SomeClass r = o.readValue(s, SomeClass.class); System.out.println(r); },但很可能这不是你的意思。 (文档)[https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/ObjectMapper.html] 也没有这种用例,例如 readValue(String content, Class<T> valueType) - jumping_monkey
我不理解你的问题:你没有传递JSON null,而是传递了JSON对象。这不会产生“null”值。 - StaxMan
嗨@StaxMan,谢谢您回复,您能否举个例子说明JSON值“null”的含义?谢谢。 - jumping_monkey
根据JSON规范(https://www.json.org/json-en.html),字符串“null”。字面上,输入仅包含`null`(可能带有前导和/或尾随空格)。 - StaxMan

1

正如@StaxMan所说,如果JSON值为null,则代码应该像这样:

ObjectMapper o = new ObjectMapper();
String s = "null";
SomeClass r = o.readValue(s, SomeClass.class);
System.out.println(r)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接