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