programing

JsonParseException : 따옴표가 없는 잘못된 문자(CTRL-CHAR, 코드 10)

javaba 2022. 9. 3. 23:52
반응형

JsonParseException : 따옴표가 없는 잘못된 문자(CTRL-CHAR, 코드 10)

사용하려고 합니다.org.apache.httpcomponentsRest API를 사용하여 JSON 포맷 데이터를 API에 게시합니다.

다음과 같은 예외가 있습니다.

원인: com.fasterxml.jackson.core.JsonParse Exception:따옴표로 둘러싸지 않은 잘못된 문자((CTRL-CHAR, 코드 10): 문자열에 포함하려면 백슬래시를 사용하여 이스케이프해야 합니다.

그 이유는ctrl-char는 JSON 문자열에 포함됩니다.

이 솔루션이나 다른 솔루션을 대체할 수 있는 방법이 있습니까?

이 문제는 JSON 문자열 리터럴에 줄바꿈(또는 다른 제어 문자)이 있는 경우에 발생할 수 있습니다.

{"foo": "bar
baz"}

데이터를 생성하는 경우 실제 새 라인을 이스케이프된 라인으로 대체합니다."\\n"스트링 리터럴을 작성할 때 사용합니다.

{"foo": "bar\nbaz"}

사용.

mapper.configure(
    JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), 
    true
);

javadoc 참조:

/**
 * Feature that determines whether parser will allow
 * JSON Strings to contain unescaped control characters
 * (ASCII characters with value less than 32, including
 * tab and line feed characters) or not.
 * If feature is set false, an exception is thrown if such a
 * character is encountered.
 *<p>
 * Since JSON specification requires quoting for all control characters,
 * this is a non-standard feature, and as such disabled by default.
 */

오래된 옵션JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS는 2.10 이후 폐지되었습니다.

github 스레드도 참조해 주세요.

Salesforce 플랫폼에서는 이 에러가 발생합니다./, 해결책은 이것들을 탈출하는 것입니다.//.

이 에러는, JSON 데이터를 서버에 송신할 때에 발생합니다.문자열에 /n을 사용하여 새 행 문자를 추가하려고 할 수 있습니다.

/n 앞에 /를 추가하면 동작합니다.새 행 문자를 이스케이프해야 합니다.

"Hello there //n start coding"

결과는 다음과 같습니다.

Hello there
start coding

JsonParseException : 따옴표가 없는 잘못된 문자(CTRL-CHAR, 코드 10)

솔루션:텍스트에 chr Tab이 있습니다.json에 텍스트를 입력하기 전에 chr Tab을 \t로 바꿉니다.

언급URL : https://stackoverflow.com/questions/31537153/jsonparseexception-illegal-unquoted-character-ctrl-char-code-10

반응형