通常はJSONを出力I sの持っている春のREST APIの異なるフィールドを無視します。はCSVとJSON
今、私はまた、いくつかのエンドポイント用のCSVをエクスポートします。
ジャクソンは、私は春のHttpMessageConverter
を使用して利用できるよう
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.8.5</version>
</dependency>
ためのライブラリを持っています。
は、しかし、私はこのように私は@JsonIgnore
アノテーションを使用することはできませんJSONに存在しているCSVの一部のフィールドを除外する必要があります。 CSVに違うignoreプロパティ/注釈を使用する方法はありますか?私は手前の値をシリアル化する値を抽出するカスタムインターフェイスを使用して考え代替として
。 List<CSVableDTO>
- >List<Map<String,?>>
- > CSV。しかし、追加のインスタンスの作成と余分なコーディングと新しいアノテーションを使用するだけなので、これを避けたいと思います。
のJavaクラス例:
public class MyDTO {
@CSVIgnore
public int id;
public String name;
public String property;
@CSVIgnore
public String ref;
}
JSON-例:
[
{
"id": 42,
"name": "Example",
"property": "FooBar",
"ref": "42:Not:FooBar:1337"
}
]
期待-CSV-結果:
"name";"property"
"Example";"FooBar"
これは有望な解決策のように見えます。私はすべてのコントローラに新しいメソッドを作成してCSVを提供できるようにしたくありません。 (多分https://stackoverflow.com/questions/22875642/jackson-set-default-view)重複したメソッドを避けるために私をベルプすることができます。)私はそれをテストしてから戻って報告します。 –
私はJackson CSVマッパーにいくつかの問題がありますが、あなたのソリューションは(少なくともJSONを使用しているときは)機能します。 –