Serialización / deserialización de objetos simples usando GSON - Sin error de indicador de zona horaria

Tengo una API que toma solicitudes y genera JSON devuelto. Ese JSON se genera utilizando el objeto a continuación y mi clase de utilidad.

Cuando se devuelve el JSON a la aplicación, en realidad utilizo exactamente la misma clase de utilidad para serializar el JSON nuevamente en el objeto.

Sin embargo, obtengo una excepción (ver más abajo). ¿Cómo puedo evitar eso? He intentado casi todo lo que puedo encontrar en línea, no he tenido suerte.

Objeto:

public class MyPerson() {
    private String name;
    private Date lastEdited;
}

Clase de utilidad para convertir:

public class GsonUtils {

    private static final Gson gson = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'hh:mm:ss")
            .create();

    public static String deserializeObjectToJSON(Object obj) {
        return gson.toJson(obj);
    }

    public static <T> Object serializeObjectFromJSON(String json, Class<T> classType) {
        return gson.fromJson(json, classType);
    }

    public static <T> List<T> serializeListOfObjectsFromJSON(String json, Type listType) {
        return gson.fromJson(json, listType);
    }
}

Error:

Caused by: java.text.ParseException: Failed to parse date ["2019-02-12T12:00:00.0"]: No time zone indicator     at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:274) ~[gson-2.8.5.jar:na]    at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:85) ~[gson-2.8.5.jar:na]    ... 66 common frames omitted

Editar:

Tomó las sugerencias y actualizó la clase de utilidad, mismo error:

Caused by: java.text.ParseException: Failed to parse date ["2019-02-12T12:00:00.0"]: No time zone indicator
    at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:274) ~[gson-2.8.5.jar:na]
    at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:85) ~[gson-2.8.5.jar:na]
    ... 66 common frames omitted
Respuesta 1

yyyy-MM-dd'T'hh:mm:ss.S
pon esto como tu formato de fecha

Respuesta: 2

Resolvió el problema

Cambié el formato a -

private static final Gson gson = new GsonBuilder()
        .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'")
        .create();

Este enlace me ayudó a resolver mi problema (el formato de hora UTC era lo que quería):

Fecha de Java a UTC usando gson

Respuesta: 3

A continuación se muestra mi archivo application.properties spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver spring.datasource.url = jdbc: mysql: // localhost: 3306 / test? AutoReconnect = true spring.datasource ....

Estoy tratando de implementar una búsqueda lineal usando matrices. Se supone que debe buscar el nombre de una persona, devolver el número respectivo si el nombre existe y devolver -1 si no existe. Tengo pruebas de junit ...

He conectado SoapUI en Eclipse. Necesito saber cómo adjuntar los archivos Xml en SOAPUI. Por favor, ayúdame ... Gracias de antemano Saludos Michael-aes

Tengo un enum FooBar en la clase Clazz con falues ​​FOO y BAR así: class Clazz {enum FooBar {FOO, BAR}} Ahora me gustaría usar el método wicket getString () para localizar ...