Frage

ich Zugriff auf einen Web-Service in einem Verfahren POST. Ich brauche eine JSON-Objekt serialisiert an den Server zu senden. In meiner Android-Klasse habe ich einige String-Felder und ein Datumsfeld. Das Datumsfeld wird wie folgt serialisiert:

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

aber mit dem Web-Dienst kompatibel sein muss ich es haben wie:

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

ich einen interessanten Artikel über Deserialisierung in hier: http : //benjii.me/2010/04/deserializing-json-in-android-using-gson/ glaube ich, so etwas zu tun. Könnten Sie mir eine helfende Hand geben?

War es hilfreich?

Lösung

Falls jemand es braucht, ist hier, wie ich es tat. 1. Erstellen Sie eine neue Klasse DateSerializer und setzen in es:

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() + ")/");
    }
}

Und hier ist, wie ich es verwenden:

   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;
}

Andere Tipps

Wenn jemand sowohl die Serialisierung und Deserialisierung braucht, habe ich eine GsonHelper darauf vorbereitet: Wie Parse .net Datetime als jSON-String in Java Date-Objekt empfangen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top