Configurar Gson para usar varios formatos de fecha
Ahora que cuando quiero decir a gson cómo analizar las fechas que hago:
Gson gson= new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm").create();
Pero también tengo campos con sólo la fecha, y otros sólo con el tiempo, y quiero que ambos se almacenen como objetos de fecha. ¿Cómo puedo hacer esto?
- Deserializar con gson y valores nulos
- ¿Cuál es el propósito básico de la anotación @SerializedName en android usando GSon
- Retrofit2 Publicar imagen como base64
- Werid ClassCastException en TreeMap.containsKey ()
- AutoValue Adaptador de tipo Gson para un mapa <String, List <Obj >>
- Cambio de Gson a Jackson para el análisis de JSON
- Com.google.gson.JsonSyntaxException: java.lang.IllegalStateException en android
- Cómo analizar el análisis de json Usando GSON en android
- Modificación retroactiva de caracteres especiales
- ¿Cómo puedo poner tipo genérico para TypeToken de Gson?
- Serialización Gson dependiendo del valor del campo
- ProGuard para Android y Retrofit2 Converter Gson?
- Subir datos de imagen de varias partes en JSON con Retrofit?
Este serializador / deserializador personalizado puede manejar múltiples formatos. Primero puede intentar analizar en un formato, y si falla, intente con un segundo formato. Esto también debe manejar fechas nulas sin explotar también.
public class GsonDateDeSerializer implements JsonDeserializer<Date> { ... private SimpleDateFormat format1 = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a"); private SimpleDateFormat format2 = new SimpleDateFormat("HH:mm:ss"); ... @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { String j = json.getAsJsonPrimitive().getAsString(); return parseDate(j); } catch (ParseException e) { throw new JsonParseException(e.getMessage(), e); } } private Date parseDate(String dateString) throws ParseException { if (dateString != null && dateString.trim().length() > 0) { try { return format1.parse(dateString); } catch (ParseException pe) { return format2.parse(dateString); } } else { return null; } } }
Espero que ayude, buena suerte con su proyecto.
GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(Date.class, new GsonDateDeSerializer()); gson = builder.create();
Por encima del código se aplicará el nuevo GsonDateDeSerializer creado como GSON Date serializador que fue creado por @reggoodwin
- ¿Qué debo poner en el atributo contentDescription para las imágenes decorativas como el separador de campo?
- Cómo ejecutar la aplicación C ++ en Android SHELL