728x90
반응형
SMALL
[Java] com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value at [Source: (StringReader); line: 1, column: 200304] at
spring boot 에서 API를 호출해서 데이터를 저장하는 파이프라인 배치가 있는데,
받아온 API 의 응답을 jackson object mapper으로 파싱하는 부분에서 오류가 발생했다.
mapper 를 사용하는 부분에서
개행문자가 포함되어 있는 json 데이터를 처리하려고 하면 (메소드 파라미터로 들어오면)
mapper는 오류를 뱉어낸다.
필자는 아래 1번 방법으로 해결했다.
해결방법1. 개행문자 허용
import com.fasterxml.jackson.databind.ObjectMapper;
@Component
@StepScope
public class SampleTasklet implement Tasklet {
public final DataOutPort dataOutPort;
public SampleTasklet(
DataOutPort dataOutPort
){
this.dataOutPort = dataOutPort;
}
@Override
public RepeatStatus execute(StepContribution scb, ChunkContext, cc) throws Exception{
/*
api 호출 후 jsonStr 저장
*/
ObjectMapper mapper = new ObjectMapper(); // BufferedReader에 담긴 데이터 JSON으로 변환
// 에러 해결을 위해 추가하게된 소스코드 한줄
mapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true)
JsonNode node = mapper.readTree(jsonStr);
DataReq = dataReq = new DataReq();
String data = node.get("data").asTest();
dataReq.setData(data);
dataOutPort.selectData(dataReq);
}
}
해결방법2. 개행문자 텍스트대치 ( \n 을 \\n 으로 치환 )
String jsonStr = jsonStr.replace("\n", "\\n");
참고했던 링크
개행문자 허용 방법 https://jo5ham.tistory.com/35
개행문자 텍스트대치 방법 https://momobob.tistory.com/137
728x90
반응형
LIST
'IT > java|Spring' 카테고리의 다른 글
[디자인패턴] 자바빈즈 패턴 (JavaBeans Pattern) (2) | 2024.10.25 |
---|---|
[디자인패턴] 점층적 생성자 패턴 (Telescoping Constructor Pattern) (0) | 2024.10.25 |
[java] 유니코드 대체문자(��) 자바 검증 처리 방법 (마름모 안의 물음표) (1) | 2024.09.12 |
[테스트] (1) | 2024.09.11 |
[Spring Batch] Tasklet vs Chunk 비교 특징 차이 장단점 (0) | 2024.07.08 |