One way to do this is to create a custom converter as follows:
import com.google.gson.*; import java.lang.reflect.Type; import java.time.ZonedDateTime; import static java.time.format.DateTimeFormatter.*; public class ZonedDateTimeConverter implements JsonSerializer<ZonedDateTime>, JsonDeserializer<ZonedDateTime> { @Override public ZonedDateTime deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { return ZonedDateTime.parse(jsonElement.getAsString(), ISO_DATE_TIME); } @Override public JsonElement serialize(ZonedDateTime zonedDateTime, Type type, JsonSerializationContext jsonSerializationContext) { return new JsonPrimitive(zonedDateTime.format(ISO_DATE_TIME)); } }
and then configure JestClientFactory to use this converter:
Gson gson = new GsonBuilder() .registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeConverter()).create(); JestClientFactory factory = new JestClientFactory(); factory.setHttpClientConfig(new HttpClientConfig .Builder("elastic search URL") .multiThreaded(true) .gson(gson) .build()); client = factory.getObject();
Hope this helps.
fywe
source share