java - 通过 json schema 将 map 转换为 json 字符串

标签 java jackson

有没有办法通过 json schema 将 map 转换为 json 字符串?我需要通过 json 模式来做到这一点,因为我不知道 map 中的对象是字符串还是数字。例如,我的 csv 看起来像这样:

name, year
1   , 1

我需要将其转换为 json 字符串 "{'name': '1', 'year': 1}" 我可以知道 1 是否是一个字符串(在名称)或数字(如果是年份)仅通过 json 模式。

最佳答案

jackson 有一个 module to parse CSV文件。假设您的项目中已经有 Jackson 依赖项,您只需添加以下依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>${jackson.version}</version>
</dependency>

然后创建一个类来定义架构并保存值(请注意 @JsonPropertyOrder 注释,因为它定义了 CSV 列的顺序):

@JsonPropertyOrder({"name", "year"})
public class Person {

    private String name;
    private Integer year;

    // Getters and setters   
}

将 CSV 文档解析为列表,最后将列表写入 JSON 字符串:

CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(Person.class).withHeader();

MappingIterator<Object> iterator = mapper.readerFor(Person.class)
        .with(schema).readValues(new FileInputStream("/path/to/the/csv/file"));

String json = new ObjectMapper().writeValueAsString(iterator.readAll());

关于java - 通过 json schema 将 map 转换为 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55064706/

相关文章:

java - 画一个不断更新数据的折线图?

java - 无法从 START_OBJECT token 中反序列化 java.util.ArrayList 的实例

jackson - 使用 Jackson CSV 忽略特定列解析 CSV 文件

java - 对于接受多个参数的 setter,是否有类似于 @JsonCreator 的注释?

java - 使用@JsonFormat时如何配置自定义错误消息?

java - JMenuItem重用

java - 从 EDT (EventQueue) 停止另一个线程

java - jade.Boot 类未找到 ubuntu10.10

java - Maven JAR - 未找到类异常

java - JsonMappingException : No suitable constructor found for type [simple type, 类 car.Car$Parts]