AppEngine端点JsonMappingException - 避免要序列化字段

时间:2013-10-23 21:24:45

标签: java google-app-engine jackson google-cloud-endpoints

我有这个错误:

 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 个答案:

答案 0 :(得分:3)

我找到了解决方案。我将整个包放在注释中。

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

这样Eclipse就不会给我这个错误:使用com.google.appengine.repackaged可能会导致您的应用无法发出警告而且一切正常。

答案 1 :(得分:0)

使用@JsonIgnoreProperties({“”,在序列化时忽略逗号分隔的字段})。 Reference

答案 2 :(得分: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,以使该类可用。