GSON equivalent for @JsonIgnoreProperties in Jackson

前端 未结 2 2021
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-21 07:21

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

相关标签:
2条回答
  • 2020-12-21 07:46

    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

    0 讨论(0)
  • 2020-12-21 07:51

    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

    0 讨论(0)
提交回复
热议问题