2

POSTメソッドでWebサービスにアクセスします。サーバーにjsonシリアル化オブジェクトを送信する必要があります。私のAndroidクラスには、いくつかの文字列フィールドと日付フィールドがあります。この日付フィールドは次のようにシリアル化されます。

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

しかし、Webサービスと互換性を持たせるには、次のようにする必要があります。

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

ここで逆シリアル化に関する興味深い記事を見つけました:http://benjii.me/2010/04/deserializing-json-in-android-using-gson/私はこのようなことをする必要があると思います。手伝ってくれませんか。

4

2 に答える 2

8

誰かがそれを必要とする場合に備えて、これが私がそれをした方法です。1.新しいクラスDateSerializerを作成し、それに入れます。

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

そして、これが私がそれを使う方法です:

   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;
}
于 2010-10-06T16:46:59.083 に答える
0

誰かがシリアル化と逆シリアル化の両方を必要とする場合、私はそれのためにGsonHelperを用意しました: json文字列として受け取った.netDateTimeをJavaのDateオブジェクトに解析する方法

于 2013-03-10T14:29:56.430 に答える