Implement the JsonSerializable interface to indicate that your class can both be converted from its Java representation
 to Json and from Json to its Java representation. In addition to implementing this interface, such a class must also
 have an empty constructor, which can be called before the object is populated using Json. The constructor may
 however be private, such that clients can never use it.
 See also 
JsonSerializableSerializer.