【问题标题】:AppEngine Endpoints JsonMappingException - Avoid field to be serializedAppEngine Endpoints JsonMappingException - 避免字段被序列化
【发布时间】:2013-11-02 08:56:57
【问题描述】:

我遇到了这个错误:

 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 不起作用的原因吗??

再次感谢。

【问题讨论】:

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


    【解决方案1】:

    我找到了解决方案。我把整个包放在注解里了。

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

    这样 Eclipse 不会给我这个错误:使用 com.google.appengine.repackaged 可能会导致您的应用在没有警告的情况下中断并且一切正常。

    【讨论】:

    • davibq 你是我今天的英雄。它确实有效,不像其他所有“忽略忽略”的解决方案!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用 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)并将其放入 google。您将找到需要添加到构建路径以使该类可用的正确 jar。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 2016-09-08
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多