GSON相当于杰克逊的@JsonIgnoreProperties

时间:2014-06-09 07:29:54

标签: java jackson gson

在Jackson中,您可以通过在类级别提供注释@JsonIgnoreProperties来忽略属性,并且不在Java类中序列化/反序列化不在实际JSON中的属性。如果我们使用GSON,它的等价物是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用@Expose对GSON GsonBuilder.excludeFieldsWithoutExposeAnnotation()注释产生类似效果。

E.g。

 public class User {
     @Expose private String firstName;
     @Expose(serialize = false) private String lastName;
     @Expose (serialize = false, deserialize = false) private String emailAddress;
     private String password;
 }

如果您对上述类使用Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(),那么toJson()fromJson()方法将完全忽略密码字段,因为它没有@Expose注释。

(注意,你也可以在这里获得更细粒度的控制,因为你可以控制GSON是否序列化/反序列化字段。)

参考:https://github.com/google/gson/blob/master/UserGuide.md#TOC-Gson-s-Expose

答案 1 :(得分:0)

在GSON中,您也可以将字段声明为setTimeout()。与将其他字段标记为transient的作用相反。但是,您将不会像@Expose那样对序列化/反序列化有更精细的控制。但是,如果您有100个跨多个类的字段,并且只需要排除一个字段,则将字段标记为@Expose会更加方便。此外,这适用于GSON的默认设置。例如

transient

参考:https://github.com/google/gson/blob/master/UserGuide.md#finer-points-with-objects