Ali*_*lin 2 serialization android gson
我以POST方法访问Web服务.我需要向服务器发送一个json序列化对象.在我的Android类中,我有一些字符串字段和一个Date字段.此Date字段序列化如下:
.... TouchDateTime":"Oct 6, 2010 5:55:29 PM"}"
Run Code Online (Sandbox Code Playgroud)
但为了与我需要的Web服务兼容,我需要:
"TouchDateTime":"\/Date(928138800000+0300)\/"
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一篇关于反序列化的有趣文章:http://benjii.me/2010/04/deserializing-json-in-android-using-gson/我想我需要做这样的事情.你能伸出援助之手吗?
如果有人需要它,我就是这样做的.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() + ")/");
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我如何使用它:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4864 次 |
| 最近记录: |