Java 忽略CSV和JSON中的不同字段
我有一个SpringRESTAPI,它通常只输出JSON 现在我还想导出一些端点的CSV 杰克逊有一个图书馆Java 忽略CSV和JSON中的不同字段,java,spring,rest,jackson,export-to-csv,Java,Spring,Rest,Jackson,Export To Csv,我有一个SpringRESTAPI,它通常只输出JSON 现在我还想导出一些端点的CSV 杰克逊有一个图书馆 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-csv</artifactId> <version>2.8.5</version> <
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.8.5</version>
</dependency>
JSON示例:
[
{
"id": 42,
"name": "Example",
"property": "FooBar",
"ref": "42:Not:FooBar:1337"
}
]
预期CSV结果:
"name";"property"
"Example";"FooBar"
请考虑使用。你会有这样的东西:
public class Foo {
public interface JsonOnly{}
public interface CsvView{}
@JsonView(JsonOnly.class)
private Integer secretNotForCsv;
// ...
}
@RestController
public class FooController {
@RequestMapping(...)
@JsonView(Foo.JsonOnly.class)
public Foo getJson() {
// ...
}
@RequestMapping(...)
@JsonView(Foo.CsvView.class)
public Foo getCsv() {
// ...
}
}
这只是一个非常粗略的草图,但它应该会给你一个想法。这看起来是一个很有希望的解决方案。虽然我不想在我所有的控制器中创建一个新的方法来支持CSV。(也许)可以告诉我避免重复的方法。)我会测试它,然后再报告。我对Jackson CSV映射器有一些问题,但你的解决方案是有效的(至少在使用JSON时)。
public class Foo {
public interface JsonOnly{}
public interface CsvView{}
@JsonView(JsonOnly.class)
private Integer secretNotForCsv;
// ...
}
@RestController
public class FooController {
@RequestMapping(...)
@JsonView(Foo.JsonOnly.class)
public Foo getJson() {
// ...
}
@RequestMapping(...)
@JsonView(Foo.CsvView.class)
public Foo getCsv() {
// ...
}
}