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

Java JsonParseException:非法的无引号字符((CTRL-CHAR,代码10),java,json,character-encoding,apache-httpclient-4.x,Java,Json,Character Encoding,Apache Httpclient 4.x,我试图使用org.apache.httpcomponents来使用RESTAPI,它将JSON格式的数据发布到API中 我得到一个例外: 原因:com.fasterxml.jackson.core.JsonParseException:非法 无引号字符((CTRL-CHAR,代码10)):必须使用 要包含在字符串中的反斜杠 原因是JSON字符串中包含了ctrl char 是否有任何方法可以替换此解决方案或其他解决方案?如果JSON字符串文字中有换行符(或其他控制字符),则可能会发生这种情况 {"

我试图使用
org.apache.httpcomponents
来使用RESTAPI,它将JSON格式的数据发布到API中

我得到一个例外:

原因:com.fasterxml.jackson.core.JsonParseException:非法 无引号字符((CTRL-CHAR,代码10)):必须使用 要包含在字符串中的反斜杠

原因是JSON字符串中包含了
ctrl char


是否有任何方法可以替换此解决方案或其他解决方案?

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

{"foo": "bar
baz"}
如果您是生成数据的人,请在创建字符串文字时用转义换行符替换实际换行符
“\\n”

{"foo": "bar\nbaz"}
使用

mapper.configure(
JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(),
真的
);
见:

/**
*确定解析器是否允许
*JSON字符串包含未转换的控制字符
*(值小于32的ASCII字符,包括
*制表符和换行符)或否。
*如果feature设置为false,则在以下情况下引发异常:
*遇到字符。
*
*由于JSON规范要求对所有控制字符进行引用,
*这是一项非标准功能,因此默认情况下已禁用。
*/
旧选项
JsonParser.Feature.ALLOW\u UNQUOTED\u CONTROL\u CHARS
从2.10开始就被弃用


另请参见。

在Salesforce平台上,此错误是由
/
引起的,解决方案是将这些错误转义为
/
此错误在向服务器发送JSON数据时发生。 可能在字符串中,您正试图使用/n添加新行字符

如果您在/n之前添加/n,它应该可以工作,您需要转义新行字符

"Hello there //n start coding"
结果如下

Hello there
start coding

你是自己创建JSON的吗?基本上,这听起来像是你有坏数据…所以,如果可以,要么修复它,要么向生成它的人投诉。如中所述,你的JSON验证是否正确?Intellij idea会在你打开.JSON文件时验证它。试试看!我有代码9问题-这是因为[TAB]Character如何在xml中实现这一点?我有
。我正在使用Jackson 2.7。和Spring4.3.2。为什么不试试这个:或者重写bean:MappingJackso‌​n2HttpMessageConvert‌​er@hoang当我试图捕获这些非法数据时,我问了一个问题,你能帮我一下吗。感谢你的帮助,我使用的导入是:
com.fasterxml.jackson.core.JsonParser.Feature;
什么是
mapper
。请提供它如何用于我的上下文-关于Salesforce平台-从“\”到“\ \”这实际上是需要的。至少在我的例子中,这是因为我的JSON中有新行字符。
\n
必须更改为
\\n
。这是因为JSON要求对控制字符进行转义。请参阅这条极好的注释。不幸的是,我之所以有新行,是因为字符串太大,我需要喜欢可读。实际的新行使字符串有助于实现这一目标
Hello there
start coding