首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决解析csv数据并转换为嵌套json java?

如何解决解析csv数据并转换为嵌套json java?
EN

Stack Overflow用户
提问于 2018-09-25 05:46:26
回答 1查看 0关注 0票数 0

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

代码语言:javascript
复制
{
    "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文件格式:

代码语言:javascript
复制
"studentName","Age","address__city","address__address1","address__zipcode","subjects__name","subjects__marks"
"Foo","12","newyork","North avenue","123213","English","40"
"","","","","","History","50"
EN

回答 1

Stack Overflow用户

发布于 2018-09-25 15:39:23

可以使用JackSon转换CSVJSON。例如,参阅以下代码:

代码语言:javascript
复制
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依赖项,如下所示:

代码语言:javascript
复制
   <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> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002728

复制
相关文章

相似问题

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