2016-07-22 6 views
3

Date of Listを含むObjectをシリアル化しようとしています。特定の形式(yyyy-MM-dd)で日付(String)のJSONリストにシリアル化したいと思います。Jacksonと日付のリストをserializeする

"executionDates": [ 
    "2016-07-22", 
    "2016-07-23", 
    "2016-07-24" 
] 

注釈でそれを行うことが可能である:

private List<Date> executionDates; 

は次のようになるのだろうか?

ありがとうございます。直列化のために

+0

注釈はどういう意味ですか?あなたはコメントを意味しますか?また、リストをシリアライズすることはできません。リストをシリアライズするには、ハッシュセットがシリアル化可能であるため、データをハッシュセットに入れる必要があります。 – Shaydoth

+0

'executionDates'変数のゲッターでこの' @JsonSerialize(using = JsonDateSerializer.class) 'のようなものがあります。 – lealoureiro

答えて

5

私は解決策を見つけました。私はこのような注釈で財産contentUsing代わりのusingを使用する必要がありました:

@JsonSerialize(contentUsing = JsonDateSerializer.class) 

contentUsingプロパティは、コレクションのために使用されています。注釈付きプロパティの内容( コレクション/配列の要素、地図の値)をシリアル化するために使用する

シリアライザクラス:クラスのドキュメントから。プロパティ(メソッド、フィールド、コンストラクタ)では しか使用できず、値は (通常は一般的です)ではありません。

+0

誰もがこれを見ている:プライベートフィールド名とgetter/setterメソッドの間に一貫性を持たせることを検討してください。たとえば、プライベートフィールドにアノテーションを入れたが、そのパブリックゲッターメソッドの名前が違うと、最終結果は注釈機能 – Chris

0

はこのような何かを試してみてください

@Component 
public class JsonDateSerializer extends JsonSerializer<Date> 
{ 
    // ISO 8601 
    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 

    @Override 
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) 
      throws IOException, JsonProcessingException 
    { 
     String formattedDate = dateFormat.format(date); 
     gen.writeString(formattedDate); 
    } 
} 
+0

私はすでに試しましたが、この例外が発生します: 'com.fasterxml.jackson.databind.JsonMappingException:java.util.Arrays $ ArrayListはjava.util.Date'にキャストできません。 List内の各要素に適用されるのではなく、コレクション全体に適用されます。 – lealoureiro

+0

コードのどこかにこれがありますか? '@JsonSerialize(using = JsonDateSerializer.class)' EDIT:データを配列リストに入れるのではなく、日付を可変型Dateに設定しようとしましたか? – Shaydoth

+0

はい、私はこのような持っている: '@JsonSerializeは \t公共の最終リスト getExecutionDates(){ \t \t戻りexecutionDates(= JsonDateSerializer.classを使用して)。 \t} '日付のリストの代わりに可変型のDateを使用すると、動作しますが、1つの日付だけでなく、日付のリストが必要です。 – lealoureiro

関連する問題