簡體   English   中英

解析csv數據並轉換為嵌套的json java

[英]Parse csv data and convert to nested json java

我正在尋找最簡單的方法或任何可用於在 java 中讀取 csv 文件並轉換為嵌套 json 的 jar。 我嘗試搜索各種來源,但我可以在所有地方找到簡單 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"

您可以使用JackSonCSV轉換為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));
    }
}

如果您使用的是maven ,則可以按如下方式添加Jackson依賴項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM