解析csv数据并转换为嵌套的json java

解析csv数据并转换为嵌套的json java,java,json,csv,jar,Java,Json,Csv,Jar,我正在寻找最简单的方法或任何jar,以读取java中的csv文件并将其转换为嵌套的json。我尝试搜索各种源代码,但是我可以在所有地方找到简单json的结果,但我需要的是我应该阅读csv文件,该文件后来必须转换为以下格式的json字符串 { "studentName": "Foo", "Age": "12", "address":{ "city" : "newyork", "address1": "North avenue",

我正在寻找最简单的方法或任何jar,以读取java中的csv文件并将其转换为嵌套的json。我尝试搜索各种源代码,但是我可以在所有地方找到简单json的结果,但我需要的是我应该阅读csv文件,该文件后来必须转换为以下格式的json字符串

{
    "studentName": "Foo",
    "Age": "12",
    "address":{
        "city" : "newyork",
        "address1": "North avenue",
        "zipcode" : "123213"
    },
    "subjects": [
        {
            "name": "English",
            "marks": "40"
        },
        {
            "name": "History",
            "marks": "50"
        }
    ]
}
我对csv中的任何格式都很满意,但是在阅读csv文件后,我需要创建类似上面的json字符串

csv文件格式:

"studentName","Age","address__city","address__address1","address__zipcode","subjects__name","subjects__marks"
"Foo","12","newyork","North avenue","123213","English","40"
"","","","","","History","50"

您可以使用
JackSon
CSV
转换为
JSON
。例如,请参见以下代码:

import java.io.File;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;

public class CSV2JSON {

    public static void main(String[] args) throws Exception {
        File input = new File("input.csv");
        File output = new File("output.json");

        CsvSchema csvSchema = CsvSchema.builder().setUseHeader(true).build();
        CsvMapper csvMapper = new CsvMapper();

        // Read data from CSV file
        List<object> readAll = csvMapper.readerFor(Map.class).with(csvSchema).readValues(input).readAll();

        ObjectMapper mapper = new ObjectMapper();

        // Write JSON formated data to output.json file
        mapper.writerWithDefaultPrettyPrinter().writeValue(output, readAll);

        // Write JSON formated data to stdout
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(readAll));
    }
}

您可以使用
JackSon
CSV
转换为
JSON
。例如,请参见以下代码:

import java.io.File;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;

public class CSV2JSON {

    public static void main(String[] args) throws Exception {
        File input = new File("input.csv");
        File output = new File("output.json");

        CsvSchema csvSchema = CsvSchema.builder().setUseHeader(true).build();
        CsvMapper csvMapper = new CsvMapper();

        // Read data from CSV file
        List<object> readAll = csvMapper.readerFor(Map.class).with(csvSchema).readValues(input).readAll();

        ObjectMapper mapper = new ObjectMapper();

        // Write JSON formated data to output.json file
        mapper.writerWithDefaultPrettyPrinter().writeValue(output, readAll);

        // Write JSON formated data to stdout
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(readAll));
    }
}

你试过openCSV吗?我目前无法向您提供链接,因为他们正在迁移到一个新的数据中心,但他们有一个CSV解析器,您可以提供一个CSV数据解析示例,说明嵌套地址和主题将如何影响解决方案答案是“使用JSON库”(或“使用CSV库”,取决于你回答的问题的两部分中的哪一部分)——因此,这实际上是一个离题的“请推荐一个库”问题。你试过openCSV吗?我目前无法向您提供链接,因为他们正在迁移到一个新的数据中心,但他们有一个CSV解析器,您可以提供一个CSV数据解析示例,说明嵌套地址和主题将如何影响解决方案答案是“使用JSON库”(或“使用CSV库”,取决于你回答的问题的两部分中的哪一部分)--因此,这实际上是一个离题的“请推荐一个库”问题。这适用于任何类型的csv格式吗?你能告诉我csv的格式以嵌套json字符串作为输出吗。。json到csv。JsonMappingException:CSV生成器不支持属性的对象值(通过引用链:csvparser.User[“address”])此代码无法将CSV示例作为问题中给出的JSON示例读取。它不需要嵌套对象。它简单地将CSV转换为:(为了简单起见,下面只显示第1行){“studentName”:“Foo”,“Age”:“12”,“address_uCity”:“newyork”,“address_uAddress1”:“North avenue”,“address_uZipcode”:“123213”,“subjects_uName”:“English”,“subjects_uMarks”:“40”}这是否适用于任何类型的CSV格式?你能告诉我csv的格式以嵌套json字符串作为输出吗。。json到csv。JsonMappingException:CSV生成器不支持属性的对象值(通过引用链:csvparser.User[“address”])此代码无法将CSV示例作为问题中给出的JSON示例读取。它不需要嵌套对象。它简单地将CSV转换为:(为了简单起见,下面只显示第1行){“studentName”:“Foo”,“Age”:“12”,“address_uCity”:“newyork”,“address_uAddress1”:“North avenue”,“address_uZipcode”:“123213”,“subjects_uName”:“English”,“subjects_uMark”:“40”}