我有一个包含表示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();
答案 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)\\/" ; }