首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略CSV和JSON中的不同字段

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

Stack Overflow用户
提问于 2017-09-04 08:55:21
回答 1查看 1.2K关注 0票数 2

我有,它通常只输出JSON。

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

杰克逊有一个图书馆

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.8.5</version>
</dependency>

我可以使用Spring的HttpMessageConverter

但是,我需要排除JSON中存在的CSV中的一些字段,因此我不能使用@JsonIgnore注释。是否有一种为CSV使用不同的忽略属性/注释的方法?

作为另一种选择,我考虑使用自定义接口来提取值,以便在实际操作前序列化这些值。List<CSVableDTO> -> List<Map<String,?>> -> CSV.但我想避免这种情况,因为它涉及额外的实例创建和额外的编码,而不是仅仅使用一个新的注释。

Java-类-示例:

代码语言:javascript
复制
public class MyDTO {

    @CSVIgnore
    public int id;
    public String name;
    public String property;
    @CSVIgnore
    public String ref;

}

JSON-示例:

代码语言:javascript
复制
[
    {
        "id": 42,
        "name": "Example",
        "property": "FooBar",
        "ref": "42:Not:FooBar:1337"
    }
]

预期-CSV-结果:

代码语言:javascript
复制
"name";"property"
"Example";"FooBar"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 09:02:18

请考虑使用 mechanism。你会得到这样的东西:

代码语言:javascript
复制
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() {
           // ...
       }
}

这只是一个非常粗略的草图,但它应该给你一个想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46033553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档