In Jackson you can ignore the properties by giving annotation @JsonIgnoreProperties at class level and the properties which are not in the actual JSON are not s
In GSON, you can also declare the field as transient. It will have the same effect as opposite to marking other fields as @Expose. But, you will not have finer grained control of serialization/deserialization as that of @Expose. However, if you have 100s of fields spanned across multiple classes, and you only need to exclude one field, it is far more convenient to mark the field as transient. Moreover, this works on the default setting of GSON. E.g.
public class User {
String firstName;
String lastName;
private String emailAddress;
private transient String password;
}
Reference: https://github.com/google/gson/blob/master/UserGuide.md#finer-points-with-objects
You can get a similar effect with the GSON @Expose annotation using 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;
}
If you use Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create() with the above class, then the toJson() and fromJson() methods will completely ignore the password field as it doesn't have an @Expose annotation.
(Note you also get finer-grained control here as you can control whether GSON serializes/deserializes fields as well).
Reference: https://github.com/google/gson/blob/master/UserGuide.md#TOC-Gson-s-Expose