Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 忽略CSV和JSON中的不同字段_Java_Spring_Rest_Jackson_Export To Csv - Fatal编程技术网

Java 忽略CSV和JSON中的不同字段

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> <

我有一个SpringRESTAPI,它通常只输出JSON

现在我还想导出一些端点的CSV

杰克逊有一个图书馆

<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() {
           // ...
       }
}