java - JsonMappingException(原为 java.lang.NullPointerException)

标签 java json nullpointerexception jackson idml

我已经搜索了一段时间但没有找到任何答案,所以要么我遗漏了一些明显没有人写过的东西,要么我遇到了一个不寻常的问题。我希望这是第一个...

我正在使用第三方库 ( IDMLlib ) 从以 .idml 格式存储的 Adob​​e InDesign 文档中提取信息。内容很容易读取并存储在“Idml”类型的对象中,其中包含我需要的一切。现在,我想使用 Jackson JSON 将此对象发送到 Web 客户端(浏览器) .

我遇到了 2 个问题:

1) 对象树充满了循环引用。我已经通过使用带有注释的 Mix-ins 来解决这个问题

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")  

所以如果问题 2 需要的话,现在我已经准备好了很多 Mix-ins。

2) 我在序列化时不断收到新的特定于对象的错误。

--Output from testMethodsReturnsSomething--
| Failure:  testMethods(package.IdmlServiceTests)
|  com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: de.fhcon.idmllib.api.elements.Idml["document"]->de.fhcon.idmllib.api.elements.Document["tags"]->de.fhcon.idmllib.api.elements.tags.Tags["xmltagList"]->java.util.ArrayList[0]->de.fhcon.idmllib.api.elements.tags.XMLTag["tagColor"]->de.fhcon.idmllib.api.elements.typedefs.InDesignUIColorType["greenValue"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:218)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:183)
at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:155)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:533)
...

我已经尝试编写自定义 NullValue/NullKey 序列化程序,但这对 NullPointerException 没有帮助。

我可以在我的混合插件中使用注释来处理这个问题吗?
或者还有其他方法可以序列化这个对象吗?

最佳答案

你是对的,Double 可以处理 null 值,而 double 不能。 在我的例子中,我的属性是 Long 类型,但 getter 返回的是 long 值而不是 Long 值。只要值不是null,这是可以接受的。但是当值为 null 时,jackson 无法序列化 longnull 值。

只需更改 getter 以返回 Long 而不是 long 即可修复它。 验证您的 getter 是否返回 Double 而不是您的情况下的 double

ps:我知道这个问题已经很老了,但因为我遇到了同样的问题,而且这个问题在谷歌答案中排在第二位......似乎迟到总比不回答好

关于java - JsonMappingException(原为 java.lang.NullPointerException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12779278/

相关文章:

java - JSP - 身份验证和授权

javascript - Node : Display POST data from another website

java - 带有 ListSelectionListener 的奇怪随机 NPE

php - 在php类中生成一个随机数

json - 如何使用 serde 将 JSON 数组反序列化为结构?

java - Swing 中的 JTextArea 问题

android - 触发警报时启动 Activity

Java 相当于 PHP crypt 的加密 key

java - BigQuery - 如何列出所有用户定义函数 (UDF)

java - Mockito 匹配任何类参数