2011-06-20 5 views
3

CreatedOn日付を表すカレンダータイプを含むオブジェクトがあります。私は、ミリ秒を表示するためのアダプタを得ているが、私は、「デバイスが同様にタイムゾーン情報の構成方法への出力分からないwcf Webサービスのカレンダータイプをシリアル化するようにgsonを設定します。

を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

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(); 

私はJSOとしてHttpPost要求に私のオブジェクトを追加するときN StringEntity、私はエスケープバックスラッシュを修正:

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

が存在する場合、私はまだ、これを達成するための「より良い」の方法に興味がある...

0

は多分それがカスタムシリアライザなしに行うことができるが、フィールドのカスタムセッターを使用します:

private String CreatedOn; 

public void setCreateOn(Calendar date) { this.CreatedOn = "\\/Date(" + date.getTimeInMillis() + "-0000)\\/" ; } 
関連する問題