配置gson以序列化wcf Web服务的日历类型

时间:2011-06-20 21:44:46

标签: android wcf gson

我有一个包含表示CreatedOn日期的Calendar类型的对象。我已经让适配器显示毫秒,但我不知道如何输出设备配置的时区信息。

WCF希望日期采用以下格式:"CreatedOn":"\/Date(1305003600000-0500)\/"

这就是我目前所拥有的:

Gson gson = new GsonBuilder()
  .registerTypeAdapter(GregorianCalendar.class, new JsonSerializer<GregorianCalendar>() {

    public JsonElement serialize(GregorianCalendar date, Type type, JsonSerializationContext context) {
      return new JsonPrimitive("/Date(" + date.getTimeInMillis() + ")/");
    }

}).create();

2 个答案:

答案 0 :(得分:0)

结束以下操作:

Gson gson = new GsonBuilder()
  .registerTypeAdapter(GregorianCalendar.class, new JsonSerializer<GregorianCalendar>() {
    public JsonElement serialize(GregorianCalendar date, Type type, JsonSerializationContext context) {
      return new JsonPrimitive("\\/Date(" + date.getTimeInMillis() + "-0000)\\/");
    }               
}).create();

当我将对象作为json StringEntity添加到HttpPost请求时,我修复了转义的反斜杠:

String json = gson.toJson(data).replace("\\\\/", "\\/");

如果它存在,我仍然会对“更好”的方法感兴趣...

答案 1 :(得分:0)

也许可以在没有自定义Serializer的情况下完成,但使用该字段的自定义setter:

private String CreatedOn;

public void setCreateOn(Calendar date) { this.CreatedOn = "\\/Date(" + date.getTimeInMillis() + "-0000)\\/" ; }