|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT | |||||||||
@Retention(value=RUNTIME) @Target(value=FIELD) public @interface Expose
An annotation that indicates this member should be exposed for JSON serialization or deserialization.
This annotation has no effect unless you build Gson
with a GsonBuilder and invoke
GsonBuilder.excludeFieldsWithoutExposeAnnotation()
method.
Here is an example of how this annotation is meant to be used:
public class User {
@Expose private String firstName;
@Expose private String lastName;
@Expose private String emailAddress;
private String password;
}
If you created Gson with new Gson(), the toJson() and fromJson()
methods will use the password field along-with firstName, lastName,
and emailAddress for serialization and deserialization. However, if you created Gson
with Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()
then the toJson() and fromJson() methods of Gson will exclude the
password field. This is because the password field is not marked with the
@Expose annotation.
Note that another way to achieve the same effect would have been to just mark the
password field as transient, and Gson would have excluded it even with default
settings. The @Expose annotation is useful in a style of programming where you want to
explicitly specify all fields that should get considered for serialization or deserialization.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT | |||||||||