gson сериализация поля даты в MS WCF-совместимой форме - PullRequest
2 голосов
/ 06 октября 2010

Я получаю доступ к веб-сервису методом POST.Мне нужно отправить на сервер сериализованный объект 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/ Я думаю, мне нужно сделать что-то подобное.Не могли бы вы мне помочь?

Ответы [ 2 ]

8 голосов
/ 06 октября 2010

Если кому-то это нужно, вот как я это сделал. 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;
}
0 голосов
/ 10 марта 2013

Если кому-то нужна и сериализация, и десериализация, я подготовил для нее GsonHelper: Как проанализировать .net DateTime, полученный в виде строки json, в объект Date Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...