Greg Kopff Greg Kopff - 4 months ago 55
Java Question

How to serialize and deserialize Java 8's java.time types with Gson?

I'm using GSON to serialise some object graphs to JSON. These objects graphs use the new Java 8

java.time
entities (
ZonedDateTime
,
OffsetDateTime
,
LocalTime
etc).

I've found a library for Joda Time serialisers here - is there an equivalent library for the JDK
java.time
classes?

(This person had no luck with their efforts to use GSON with
java.time
- and their question remains unanswered).

Answer

There's a Java 8 library here:

https://github.com/gkopff/gson-javatime-serialisers

Here's the Maven details (check central for the latest version):

<dependency>
  <groupId>com.fatboyindustrial.gson-javatime-serialisers</groupId>
  <artifactId>gson-javatime-serialisers</artifactId>
  <version>1.1.1</version>
</dependency>

And here's a quick example of how you drive it:

Gson gson = Converters.registerOffsetDateTime(new GsonBuilder()).create();
SomeContainerObject original = new SomeContainerObject(OffsetDateTime.now());

String json = gson.toJson(original);
SomeContainerObject reconstituted = gson.fromJson(json, SomeContainerObject.class);
Comments