Question

J'accéder à un service Web dans une méthode POST. Je dois envoyer au serveur un objet sérialisé JSON. Dans ma classe Android J'ai quelques champs de cordes et un champ Date. Ce champ Date se sérialisé comme ceci:

.... TouchDateTime":"Oct 6, 2010 5:55:29 PM"}"

mais pour être compatible avec le service web que je dois avoir comme:

"TouchDateTime":"\/Date(928138800000+0300)\/"

J'ai trouvé un article intéressant sur Désérialisation ici: http : //benjii.me/2010/04/deserializing-json-in-android-using-gson/ Je pense que je dois faire quelque chose comme ça. Pourriez-vous me donner un coup de main?

Était-ce utile?

La solution

Dans le cas où tout le monde a besoin, voici comment je l'ai fait. 1. Créer dans une nouvelle classe DateSerializer et de mettre:

import java.lang.reflect.Type;
import java.util.Date;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

public class DateSerializer implements JsonSerializer<Object> 
{
    public JsonElement serialize(Date date, Type typeOfT, JsonSerializationContext context)
    {
        return new JsonPrimitive("/Date(" + date.getTime() + ")/");
    }

    public JsonElement serialize(Object arg0, Type arg1,
            JsonSerializationContext arg2) {

        Date date = (Date) arg0;
        return new JsonPrimitive("/Date(" + date.getTime() + ")/");
    }
}

Et voici comment je l'utilise:

   public static JSONObject Object(Object o){
    try {
        GsonBuilder gsonb = new GsonBuilder();
        DateSerializer ds = new DateSerializer();
        gsonb.registerTypeAdapter(Date.class, ds);
        Gson gson = gsonb.create();


        return new JSONObject(gson.toJson(o));
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

Autres conseils

Si quelqu'un a besoin à la fois sérialisation et désérialisation, j'ai préparé un GsonHelper pour elle: Comment Parse .net DateTime reçu en tant que chaîne de JSON dans l'objet date de java

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top