代码之家  ›  专栏  ›  技术社区  ›  kapso

Jackson-动态抑制属性的序列化(写)

  •  10
  • kapso  · 技术社区  · 14 年前

    我正试图使用Jackson在Tomcat/jersey中将java对象转换为JSON对象。并希望动态抑制某些属性的序列化(写入)。

    因此,作为下面的一个例子,我想在将用户对象序列化为JSON时抑制“id”字段。。

    new ObjectMapper.writeValueAsString(user);
    
    
    class User {
    
    private String id = null;
    private String firstName = null;
    private String lastName = null;
    
    //getters
    //setters
    
    }//end class
    
    4 回复  |  直到 14 年前
        1
  •  4
  •   dean    14 年前
        2
  •  2
  •   Mihai Toader    14 年前

    支票

    ObjectMapper.configure(SerialiationJson.Feature f, boolean value)
    

    org.codehaus.jackson.annotate.JsonIgnore 
    

    注释

    只有当您希望某个类型的所有实例在序列化时忽略id时,此操作才有效。如果你真的想要动态的(也就是每个实例的定制),你可能不得不自己破解jackson库。

        3
  •  0
  •   skaffman    14 年前

    我看不出有什么办法。如果需要动态决定哪些属性被封送处理,那么我建议您手动构造 Map 地图 给杰克逊,而不是通过 User 直接反对。

        4
  •  0
  •   Guido    14 年前

    你试过用 JSON Views ? 视图允许基于注释的机制来定义不同的配置文件,因此如果您只需要为不同的用户提供稍微不同的视图,这就可以为您工作。