Gson – Unparseable fecha

Tengo que enlazar un objeto Json con un objeto java que tiene Fecha de vencimiento. El formato de la Fecha en mi Json es el siguiente:

2013-01-04T10:50:26+0000

Y estoy usando el GsonBulder como sigue:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();

pero Im llegar a la siguiente excepción:

The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
com.google.gson.JsonSyntaxException: 2013-01-04T10:50:26+0000
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:81)
.....
Caused by: java.text.ParseException: Unparseable date: "2013-01-04T10:50:26+0000"
at java.text.DateFormat.parse(DateFormat.java:337)
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79)

Estoy tratando de cargar esta petición con Gson:

https://graph.facebook.com/me?fields=id,username,email,link,updated_time&access_token=accessToken

Y la respuesta es

{"id":"12345","username":"myusername","email":"myemail\u0040yahoo.it","link":"http:\/\/www.facebook.com\/mysusername","updated_time":"2013-01-04T10:50:26+0000"}
  • ¿De dónde viene el tiempo de la cadena (2013-01-04T10:50:26+0000) vienen?
  • He actualizado a la pregunta, por favor, eche un vistazo a él.
InformationsquelleAutor ddelizia | 2013-02-10

1 Kommentar

  1. 46

    La Deserialización falla, porque las comillas en la Cadena json que faltan.

    Las siguientes obras:

        Gson gson=  new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
    
        String date = "\"2013-02-10T13:45:30+0100\"";
        Date test = gson.fromJson(date, Date.class);
        System.out.println("date:" + test);

    De salida:

    fecha:Dom Feb 10 13:45:30 CET 2013

    HTH

    Edición Completa Ejemplo:

    import java.util.Date;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    
    public class FacebookResponse {
    
    int id;
    String username;
    String email;
    String link;
    Date updated_time;
    
    @Override
    public String toString() {
        return "ID: " + id + " username: " + username + " email: " + email + " link: " + link + " updated_time: " + updated_time;
    };
    
    
    
    /**
     * @param args
     */
    public static void main(String[] args) {        
        String json = "{\"id\":\"12345\",\"username\":\"myusername\",\"email\":\"myemail\u0040yahoo.it\",\"link\":\"http://www.facebook.com/mysusername\",\"updated_time\":\"2013-01-04T10:50:26+0000\"}";
        Gson gson=  new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
    
        FacebookResponse response = gson.fromJson(json, FacebookResponse.class);
        System.out.println(response);
    }

    }

    • Gracias Dominik, al final, mi código de trabajo, pero yo estaba probando el código con un mal formado json. Gracias por los comentarios
    • Hay una manera de decirle a la setDateFormat método para agregar la falta de cotizaciones, o le tengo que escribir una costumbre DateAdapter para que?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea