Java POJO를 String으로 변환하여 AWS Kinesis Firehose Stream에 게시되도록 전달할 수있었습니다.Jackson-dataformat-csv 라이브러리에서 구분 기호 문자를 이스케이프 처리하는 방법은 무엇입니까?
이 글은 convertToString()
이지만 필자는 분리 문자를 이스케이프 처리하는 올바른 방법을 찾을 수 없습니다.
public <T> List<String> convertToString(List<T> objectList, Class<T> tClass) {
List<String> stringList = new ArrayList<>();
char delimiter = ',';
char escape = '\\';
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(tClass);
for (T object : objectList) {
try{
stringList.add(mapper.writer(schema.withColumnSeparator(delimiter).withEscapeChar(escape))
.writeValueAsString(object));
} catch (JsonProcessingException e) {
System.out.println("Exception : " + e);
}
}
return stringList;
}
입력 : 슈퍼 플래시 새로운 슈퍼 = (1, "플래시", "배리 알렌" "DC");
예상 출력 : 1, 플래시, "배리 \ 알렌", DC는 내가 갖는
출력 : 1, 플래시, "배리, 알렌", DC는
누군가가 어떤 지점 수 내가 잘못하고있어?
필자는 필드 값에서 내 구분 기호를 이스케이프 처리하는 데 관심이 있으므로 단일 필드로 계산할 수 있습니다. 이것을 달성 할 수있는 방법이 있습니까? – dushyantashu
이미 하나의 필드로 계산됩니다. 출력에서 "Barry, Allen"이 큰 따옴표를 사용하는 경우 이는 단일 필드임을 의미합니다. 출력을 .csv 파일로 저장하고 Excel에서 열어 결과를 볼 수 있습니다. 그러면 "Barry, Allen"이 큰 따옴표를 표시하지 않고 하나의 필드로 나타납니다. 이중 따옴표가있는 필드를 감싸면 문자를 이스케이프합니다. 따옴표 만 이스케이프하면됩니다. –
csv의 경우 작동하지만 AWS 키네시스 구분 기호는 Redshift로 게시 할 때 이스케이프 처리됩니다. 이 문제를 확인하려면 http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-data-with-the-escape-option을 참조하십시오. 따라서 해결 방법을 찾고있었습니다. – dushyantashu