Dhanush Gopinath
Dhanush Gopinath

Reputation: 5739

GSON equivalent for @JsonIgnoreProperties in Jackson

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

Answers (2)

Manish Bansal
Manish Bansal

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

Woodham
Woodham

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

Related Questions