Android MS WCF兼容格式中日期字段的gson序列化

Android MS WCF兼容格式中日期字段的gson序列化,android,serialization,gson,Android,Serialization,Gson,我使用POST方法访问web服务。我需要向服务器发送一个json序列化对象。在我的Android类中,我有一些字符串字段和一个日期字段。此日期字段的序列化方式如下: .... TouchDateTime":"Oct 6, 2010 5:55:29 PM"}" 但要与web服务兼容,我需要将其设置为: "TouchDateTime":"\/Date(928138800000+0300)\/" 我在这里发现了一篇关于反序列化的有趣文章:我想我需要这样做。你能帮我一把吗?如果有人需要的话,我是这样

我使用POST方法访问web服务。我需要向服务器发送一个json序列化对象。在我的Android类中,我有一些字符串字段和一个日期字段。此日期字段的序列化方式如下:

.... TouchDateTime":"Oct 6, 2010 5:55:29 PM"}"
但要与web服务兼容,我需要将其设置为:

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

我在这里发现了一篇关于反序列化的有趣文章:我想我需要这样做。你能帮我一把吗?

如果有人需要的话,我是这样做的。 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() + ")/");
    }
}

如果有人同时需要序列化和反序列化,我已经为其准备了一个GsonHelper:

我能问一下为什么要添加“Date()”和/字符吗?我在很多例子中都看到过,但我就是无法理解。为什么不把毫秒转换成一个数字呢?Thanks@JayPea因为这是延迟的WCF.NET日期时间格式的一部分。如果你在JSON中看到它,很可能API在其他方面也异常迟缓。你是怎么做到的?
   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;
}