Package com.google.gson.annotations
Annotation Type 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(serialize = false) private String lastName; @Expose (serialize = false, deserialize = false) 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. Gson will
also exclude lastName
and emailAddress
from serialization since serialize
is set to false
. Similarly, Gson will exclude emailAddress
from deserialization
since deserialize
is set to false.
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.
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionboolean
Iftrue
, the field marked with this annotation is deserialized from the JSON.boolean
Iftrue
, the field marked with this annotation is written out in the JSON while serializing.
-
Element Details
-
serialize
boolean serializeIftrue
, the field marked with this annotation is written out in the JSON while serializing. Iffalse
, the field marked with this annotation is skipped from the serialized output. Defaults totrue
.- Since:
- 1.4
- Default:
true
-
deserialize
boolean deserializeIftrue
, the field marked with this annotation is deserialized from the JSON. Iffalse
, the field marked with this annotation is skipped during deserialization. Defaults totrue
.- Since:
- 1.4
- Default:
true
-