Reputation: 5739
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 serialized/deserialized from/to the Java class. What is the equivalent of it if we are using GSON?
Upvotes: 3
Views: 11177
Reputation: 2671
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
Upvotes: 1
Reputation: 4273
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
Upvotes: 5