|
||||||||||
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 |