gpt4 book ai didi

java - 如何在 Jackson CSVMapper 中仅将标题打印到字符串中

转载 作者:行者123 更新时间:2023-12-02 06:15:10 29 4
gpt4 key购买 nike

我正在使用 Jackson CSVMapper 将制表符分隔的文本文件读入 java 对象列表,并将其写回到另一个制表符分隔的文本文件中。我的类(class)如下所示:

@Getter
@Setter
@ToString
@NoArgsConstructor
@JsonPropertyOrder({
"Id",
"Name",
"Address 1",
"Address 2"})
public class InputSchema {
@JsonProperty("Id")private String id;
@JsonProperty("Name") private String name;
@JsonProperty("Address 1") private String address1;
@JsonProperty("Address 2") private String address2;
}

解析器代码:

public List<InputSchema> parseAddresses(String fileContent) throws IOException {
List<InputSchema> inputAddresses = new ArrayList<>();
InputStream inputStream = new ByteArrayInputStream(fileContent.getBytes());
MappingIterator<InputSchema> iterator = getInputSchemaMappingIterator(inputStream);

while (iterator.hasNextValue()) {
InputSchema inputAddress = iterator.nextValue();
log.info(inputAddress.toString());
inputAddresses.add(inputAddress);
}

return inputAddresses;
}

private MappingIterator<InputSchema> getInputSchemaMappingIterator(InputStream inputStream) throws IOException {
CsvMapper mapper = new CsvMapper();
mapper.configure(CsvParser.Feature.FAIL_ON_MISSING_COLUMNS, true);
mapper.configure(CsvParser.Feature.TRIM_SPACES, true);
CsvSchema schema = mapper.schemaFor(InputSchema.class)
.withColumnSeparator('\t')
.withHeader()
.withStrictHeaders(true);

ObjectReader reader = mapper.readerFor(InputSchema.class).with(schema);
MappingIterator<InputSchema> iterator = reader.readValues(inputStream);

return iterator;
}

作者代码:

private String toTxt(List<InputSchema> inputAddresses) throws JsonProcessingException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(InputSchema.class)
.withColumnSeparator('\t')
.withLineSeparator("\n")
.withHeader()
.withoutQuoteChar();

return mapper.writer(schema).writeValueAsString(inputAddresses);
}

我只想提取标题,而不考虑数据。所以,

String header = extractHeader();

应该返回

"Id\tName\tAddress 1\tAddress 2"

我该怎么做?

谢谢!

最佳答案

这对我有用。

    public String extractHeader(CsvSchema schema) throws JsonProcessingException {
CsvSchema headerSchema = schema.withHeader();
return new CsvMapper().writer(headerSchema).writeValueAsString(null);
}

关于java - 如何在 Jackson CSVMapper 中仅将标题打印到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876519/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com