我一直在尋找這一段時間,但還沒有找到任何答案,所以要麼我錯過了一些顯而易見的東西,沒有人寫過關於它的東西,或者我已經遇到不尋常的問題。我希望這是第一個...JsonMappingException(was java.lang.NullPointerException)
我正在使用第三方庫(IDMLlib)從存儲在.idml格式的Adobe InDesign文檔中提取信息。內容很容易讀取並存儲在「Idml」類型的對象中,該對象包含我需要的所有內容。現在,我想使用Jackson JSON將此對象發送到Web客戶端(瀏覽器)。
我已經打了2個問題:
1)對象樹是全部循環referefences的。如果需要的問題2.
2)我不斷收到新我一直使用混合插件與註釋
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
所以,現在我已經得到了很多驢友造訪就緒解決了這個,序列化時特定於對象的錯誤。
--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-in中使用的註釋來處理這個問題?
或者有另一種方法可以序列化這個對象嗎?
唉,什麼是真正需要的是回答這個問題堆棧跟蹤的部分更接近原始NPE。這部分只是指出拋出一個'RuntimeException'的catch子句。如果不知道這一點,就不可能說出該怎麼做才能避免它。 – StaxMan
原來的屬性「greenValue」是Double類型的,不是double,所以它也可以有null值。雖然Double可以處理空值,但double不能。我的理論是傑克遜JSON試圖以原始數據類型的形式訪問它,導致崩潰。仍然不知道該怎麼辦,雖然... – Steffen
這聽起來像是可能的錯誤處理,所以它是一個很好的文件爲傑克遜的錯誤。雖然大多數基本類型的處理程序將空值強制爲默認值(此處爲0.0d),但Object Id處理程序可能沒有采取適當的預防措施 - 或者可能是setter/field訪問觸發了此問題。 Java在很多情況下自動解包。 – StaxMan