1
我有通常只输出JSON的Spring REST API。忽略CSV和JSON中的不同字段
现在我还想为某些端点导出CSV。
杰克逊已经为
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.8.5</version>
</dependency>
库,我可以使用Spring的HttpMessageConverter
利用。
但是我需要排除CSV中存在于JSON中的一些字段,因此我不能使用@JsonIgnore
注释。有没有办法为CSV使用不同的忽略属性/注释?
作为一种替代方案,我考虑使用自定义界面来提取值,以便事先序列化值。 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)可以帮我避免重复的方法。)我会测试它,然后回报。 –
我有一些杰克逊CSV映射器的问题,但你的解决方案工作(至少在使用JSON时)。 –