【问题标题】:How to convert json Array to CSV file using Java如何使用 Java 将 json 数组转换为 CSV 文件
【发布时间】:2020-06-08 20:49:13
【问题描述】:

我一直在寻找如何将我的 json 数组转换为 CSV 文件,但无法得到明确的答案。如果有人做过,请帮助我如何转换它或分享任何有用的文档, 谢谢。

【问题讨论】:

标签: java android arrays csv


【解决方案1】:

图书馆链接:https://github.com/opendevl/Json2Flat

这样的示例输出:https://j2flateval.herokuapp.com

 // There are some typos in the data.

// You can try json2flat for converting JSON docs to get an equivalent CSV representation.
// If you want to try for more JSON doc click here.

// For the JSON data :

{
    "results": [{

            "geo_position": {
                "Field1": 11,
                "Field2": 12
            },
            "Field3": 13,
            "Field4": 14,
            "Field5": 15
        },

        {
            "geo_position": {
                "Field1": 21,
                "Field2": 22
            },
            "Field3": 23,
            "Field4": 24,
            "Field5": 25
        }
    ]
}

// The code is also preety simple.

JFlat flatMe = new JFlat(jsonString);
flatMe
    .json2Sheet()
    .headerSeparator("/")
    .write2csv("test.csv");

// This will write the result to test.csv file.

// Equivalent CSV representation :


results/Field3,results/Field4,results/Field5,results/geo_position/Field1,results/geo_position/Field2
    13.0,14.0,15.0,11.0,12.0
    23.0,24.0,25.0,21.0,22.0

【讨论】:

    【解决方案2】:

    你可以使用杰克逊。

    依赖关系:

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-csv</artifactId>
        <version>2.9.8</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
    </dependency>
    

    代码示例:

    @JsonPropertyOrder({"firstName", "lastName", "age"})
    public class Person {
        private String firstName; 
        private String lastName;
        private Integer age;
    
        public Person()
        {}
    
        public Person(String firstName, String lastName, Integer age) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    

    现在是消费者:

    public class Consumer {
        private ObjectMapper mapper; 
    
        private CsvMapper csvMapper; 
    
    
        public static void main(String[] args) {
            csvMapper = new CsvMapper();
            mapper = new ObjectMapper();
    
            List<Person> list = new ArrayList<>();
            simpleList.add(new Person("John", "Wolf", 26));
    
            Consumer c = new Consumer();
    
            String json = c.createJson(list);
            System.out.println("The Json file:" + json);
    
            String csvStr = c.createCsv(list);
            System.out.println("The Csv file:" + csvStr);        
        }
    
    
        private String createJson(List<Person> list) throws JsonProcessingException { 
            return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(list);
        }
    
        private String createCsvList<Person> list) throws JsonProcessingException {
            CsvSchema schema = csvMapper.schemaFor(Person.class).withHeader();
            return csvMapper.writer(schema).writeValueAsString(list);
        }
    }
    

    Json 输出:

    [{
    “名字”:“约翰”,
    “姓氏”:“狼”,
    “年龄”:26
    } ]

    CSV 输出:

    名字、姓氏、年龄
    约翰,沃尔夫,26

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2016-11-09
      • 2017-09-07
      • 2018-08-20
      • 2014-10-02
      • 1970-01-01
      相关资源
      最近更新 更多