Skip to content

lquocnam/gson-java8-datatype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License

Java8 data type(Optional and DateTime) module for gson

Get from maven central repo

<dependency>
    <groupId>net.dongliu</groupId>
    <artifactId>gson-java8-datatype</artifactId>
    <version>1.0.0</version>
</dependency>

Register

Gson gson = new GsonBuilder().registerTypeAdapterFactory(new GsonJava8TypeAdapterFactory()).create();

Optinal Types

Empty Optional value is treated as null; Non-empty optional value is treat as optional.get()

gson.toJson(OptionalInt.of(10)); // 10
gson.fromJson("10", OptionalInt.class); // = OptionalInt.of(10)
gson.toJson(OptionalInt.empty()); // null
gson.fromJson("null", OptionalInt.class); // = OptionalInt.empty()

gson.toJson(Optional.of("test")); // "test"
gson.toJson(Optional.of(Optional.of("test"))); // "test"

gson.toJson(Optional.empty()); // null
gson.toJson(Optional.of(Optional.empty())); // null
gson.fromJson("\"test\"", new TypeToken<Optional<String>>() {}.getType()); // = Optional.of("test")
gson.fromJson("\"test\"", new TypeToken<Optional<Optional<String>>>() {}.getType()); // =Optional.of(Optional.of("test"))
gson.fromJson("null", new TypeToken<Optional<String>>() {}.getType()); // = Optional.empty()
gson.fromJson("null", new TypeToken<Optional<Optional<String>>>() {}.getType()); // = Optional.empty()
gson.fromJson("null", Optional.class); // = Optional.empty()

DateTime Types

Java8 new datetime types serialized using ISO-9601 format

ZoneId zoneId = ZoneId.of("Asia/Shanghai");
Instant instant = Instant.ofEpochMilli(1457595643101L);
gson.toJson(instant); // "2016-03-10T07:40:43.101Z"
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zoneId);
gson.toJson(zonedDateTime); // "2016-03-10T15:40:43.101+08:00[Asia/Shanghai]"
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
gson.toJson(localDateTime); // "2016-03-10T15:40:43.101"
LocalDate localDate = localDateTime.toLocalDate();
gson.toJson(localDate); // "2016-03-10"
LocalTime localTime = localDateTime.toLocalTime();
gson.toJson(localTime); // "15:40:43.101"
OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(instant, zoneId);
gson.toJson(offsetDateTime); // "2016-03-10T15:40:43.101+08:00"
OffsetTime offsetTime = offsetDateTime.toOffsetTime();
gson.toJson(offsetTime); // "15:40:43.101+08:00"

YearMonth yearMonth = YearMonth.of(2016, 3);
gson.toJson(yearMonth); // "2016-03"
Year year = Year.of(2016);
gson.toJson(year); // "2016"

Period period = Period.ofDays(1);
gson.toJson(period); // "P1D"
Duration duration = Duration.ofDays(1);
gson.toJson(period); // "P1D"

About

Java8 data type moudle for gson

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages