2013-10-23 16 views
3

林:AppEngine上端點JsonMappingException - 避免現場被串行化有此錯誤

com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle 

我一直在試圖避免現場造成這種被序列化,但不糾正錯誤。 我試圖把@JsonIgnore放在getter,setter,屬性和所有可能的組合中。

感謝

- >編輯

我無法導入com.google.appengine.repackaged.org.codehaus.jackson.annotate.JsonIgnoreProperties,它說,「com.google.appengine使用.repackaged可能會導致您的應用在沒有警告的情況下中斷。「所以我改爲導入org.codehaus.jackson.annotate.JsonIgnoreProperties。

在重新打包的軟件包(我不能導入的軟件包)中拋出異常。這就是爲什麼我的JsonIgnore不工作?再次

感謝。

回答

3

我找到了解決方案。我把整個軟件包放在註釋中。

@com.google.appengine.repackaged.org.codehaus.jackson.annotate.JsonIgnoreProperties({"users"}) 
public class MyClass extends MySuperClass{ 
    .... 
} 

這樣Eclipse不給我這個錯誤:的com.google.appengine.repackaged可能會導致您的應用程序不破警告,一切運行良好。

+0

davibq你是我的英雄。它實際上工作,不像其他任何解決方案,它「忽略了忽略!」 –

0

使用@JsonIgnoreProperties({「,逗號分隔的字段在序列化時被忽略})。 Reference

+0

你能否檢查我的編輯... – davibq

0

使用com.google.appengine.repackaged通常是一個非常糟糕的主意,因爲警告不會被忽略或解決。相反,您應該使用來自jackson-core-asl-.jar的org.codehaus.jackson.annotate.JsonIgnoreProperties類。

如果您正在使用Maven,你可以用

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 

否則添加此庫,從那裏http://mavenhub.com/c/org/codehaus/jackson/annotate/JsonIgnoreProperties/jar

下載當你需要一個類,這是一個重新包裝的進口,只需複製導入操作重新包裝的部分(例如在這種情況下org.codehaus.jackson.annotate.JsonIgnoreProperties)並將其放入谷歌。你會發現你需要添加到你的構建路徑的正確的jar來讓這個類可用。