JsonMappingException(原为 java.lang.NullPointerException)

新手上路,请多包涵

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

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

我遇到了两个问题:

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

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

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

  1. 我在序列化时不断收到新的特定于对象的错误。
 --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 没有帮助。

我可以在我的 Mix-ins 中使用注释来处理这个问题吗?

还是有另一种方法可以序列化这个对象?

原文由 Steffen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
2 个回答

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

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

ps:我知道这个问题已经很老了但是因为我遇到了同样的问题而且这个问题在谷歌答案中排在第二位……迟来回答它似乎是公平的

原文由 Maxime T 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不知道这是否仍然有效,但我通过更改 com.fasterxml.jackson.dataformat:jackson-dataformat-yaml 的版本解决了这个问题。早些时候我使用的是 2.3.0 并且遇到了同样的错误。我将其更改为 2.7.8,现在工作正常。

原文由 shane 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题