IT/java|Spring

[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

snapcoder 2024. 8. 29. 10:55
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

 

[에러해결] Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string val

spring boot 에서 jackson object mapper로, 받아온 API 의 응답을 파싱할때 생긴 오류 해결 방법 나는 기존에 jackson objectMapper 을 한개 생성해서 사용중이었음 @Configuration class ObjectMapperConfiguration { @Bean fun ob

jo5ham.tistory.com

 

개행문자 텍스트대치 방법 https://momobob.tistory.com/137

 

[Java] Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value

ErrorSpringBoot에서 MongoDB에 데이터를 insert하는 로직에서 아래와 같은 에러가 발생함.Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value    SolutionInsert 데이터

momobob.tistory.com

 

 

728x90
반응형
LIST