MS WCF 兼容形式的日期字段的 gson 序列化

发布于 2024-09-26 04:56:40 字数 481 浏览 2 评论 0原文

我通过 POST 方法访问 Web 服务。我需要向服务器发送一个 json 序列化对象。在我的 Android 类中,我有一些字符串字段和一个日期字段。这个日期字段像这样序列化:

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

但为了与网络服务兼容,我需要这样:

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

我在这里找到了一篇关于反序列化的有趣文章:http://benjii.me/2010/04/deserializing-json-in-android-using-gson/ 我想我需要做这样的事情。你能帮我一把吗?

I access a web service in a POST method. I need to send to the server a json serialized object. In my Android class I have some string fields and a Date field. This Date field gets serialized like this:

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

but to be compatible with the web service I need to have it like:

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

I found an interesting article about Deserialization in here: http://benjii.me/2010/04/deserializing-json-in-android-using-gson/ I think I need to do something like this. Could you give me a helping hand ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍暮颜 2024-10-03 04:56:40

如果有人需要,我就是这样做的。
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;
}

In case anybody needs it, here is how I did it.
1. Create a new class DateSerializer and put in it:

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

And here is how I use it:

   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;
}
云雾 2024-10-03 04:56:40

如果有人同时需要序列化和反序列化,我已经为它准备了一个GsonHelper:
如何将 .net DateTime 作为 json 字符串解析为 java 的 Date 对象

If someone needs both serialization and deserialization, I've prepared a GsonHelper for it:
How to parse .net DateTime received as json string into java's Date object

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文