JsonParseException : 非法的不带引号字符 ((CTRL-CHAR,代码 10)

我正在尝试使用 Rest API,它将 JSON 格式数据发布到 API。org.apache.httpcomponents

我得到这个例外:

由以下原因引起:com.fasterxml.jackson.core.JsonParseException:非法的未加引号字符((CTRL-CHAR,代码10)):必须使用反斜杠进行转义才能包含在字符串中。

原因是因为 包含在 JSON 字符串中。ctrl-char

有没有办法取代这个或其他一些解决方案?


答案 1

如果在 JSON 字符串文本中有换行符(或其他控制字符),则可能会发生这种情况。

{"foo": "bar
baz"}

如果是生成数据的人,请在创建字符串文本时将实际的换行符替换为转义换行符。"\\n"

{"foo": "bar\nbaz"}

答案 2

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.
 */

旧选项自 2.10 起已弃用。JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS

另请参阅 github 线程