Expose (Gson 2.3.1 API)
Date: 2014-11-20

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT

## com.google.gson.annotations
Annotation Type Expose

    @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(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.

Author:
  Inderjeet Singh, Joel Leitch

Optional Element Summary
`boolean` | `deserialize` If `true`, the field marked with this annotation is deserialized from the JSON.
`boolean` | `serialize` If `true`, the field marked with this annotation is written out in the JSON while serializing.

### serialize

    public abstract boolean serialize

  If `true`, the field marked with this annotation is written out in the JSON while serializing. If `false`, the field marked with this annotation is skipped from the serialized output. Defaults to `true`.

  Since:
    1.4
  Default:
    true

### deserialize

    public abstract boolean deserialize

  If `true`, the field marked with this annotation is deserialized from the JSON. If `false`, the field marked with this annotation is skipped during deserialization. Defaults to `true`.

  Since:
    1.4
  Default:
    true

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT

Copyright © 2008–2014 Google, Inc.. All rights reserved.