当前位置: 首页 > 知识库问答 >
问题:

避免要序列化的字段

康弘义
2023-03-14

我有一个错误:

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

我一直试图避免导致此被序列化的字段,但错误没有得到纠正。我试图把@JsonIgnore放在任何地方,在getter、setter、属性和所有可能的组合中。

谢啦

-

我无法导入com.google.阿彭金。重新包装。组织。科德豪斯。杰克逊。注释JsonIgnoreProperties说,“使用com.google.appengine.repacked可能会导致你的应用程序在没有警告的情况下崩溃。”。所以我导入了org。科德豪斯。杰克逊。注释相反,JsonIgnoreProperties。

异常抛出在重新打包的包(一个我不能导入)。这就是我的JsonIgnore不工作的原因吗??

再次感谢。

共有3个答案

周伟泽
2023-03-14

使用com.google.阿彭金。重新包装通常是一个非常糟糕的主意,因为警告不存在,不能忽视或处理。相反,您应该使用org。科德豪斯。杰克逊。注释JsonIgnoreProperties类来自jackson core asl-。罐子

如果您使用的是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,以使该类可用。

井嘉胜
2023-03-14

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

冯招
2023-03-14

我找到了解决办法。我把整个包放在注释中。

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

这样Eclipse就不会给我这个错误:使用com.google.阿彭金。重新打包可能会导致你的应用程序在没有警告的情况下崩溃,并且一切正常。

 类似资料:
  • 我有一个产生JSON的控制器,从这个控制器,我返回一个实体对象,它由Jackson自动序列化。 现在,我想避免根据传递给控制器的参数返回一些字段。我查看了使用过滤器属性/Mixins等完成此操作的示例。但是我看到的所有示例都要求我使用对象映射器手动序列化/反序列化 Bean。有没有办法在没有手动序列化的情况下执行此操作?我的代码与此类似: 现在,根据传递给控制器的“变量”值,我想显示/隐藏MyEn

  • Jackson序列化到JSON有一些很好的特性,比如SerializationFeature.write_null_map_values,它允许您避免将null写入序列化对象。 但是,如果我使用自定义的JsonSerializer,这个设置将被忽略,并且我被迫在对WriteStringField的所有调用中进行空检查。例如,我注册了一个自定义的JSONSerializer: 然后在ImportPr

  • 我有一个由Spring MVC框架构建的RESTful项目,使用Mybatis ORM。 我启用了延迟加载,这样当我查询 Book 时,它不会查询 Author,除非我调用 book.getAuthor() 方法,并且一切正常。 但是,当 RESTful 控制器返回 Book 对象时,它使用 Jackson 将 Book 对象传输到 json,并触发 mybatis 加载 Author 对象。 有

  • 我不想忽略这个财产。我需要这些数据。但作为字符串,不是完全反序列化的对象 我需要能够做到:

  • 问题内容: 我使用Jackson库将我的pojo对象序列化为表示形式。例如,我有A类和B类: 如果我要序列化类A中的对象,则有可能在序列化时获得递归。我知道我可以通过使用停止它。 是否可以通过深度级别限制序列化? 例如,如果级别为2,则序列化将以这种方式进行: 序列化一个,级别= 0(0 <2正常)->序列化 序列化ab,级别= 1(1 <2 ok)->序列化 序列化ABA,级别= 2(2 <2不

  • 序列化a,级别=0(0<2确定)->序列化 序列化A.B,级别=1(1<2确定)->序列化 序列化A.B.A,级别=2(2<2不为真)->停止 提前道谢。