错误消息告诉您在字符串文字中包含控制字符,例如,字符代码8或10或13或任何小于32(空格)的字符。
该JSON定义告诉我们,你不能在字符串字面控制字符,则必须使用转义序列,如
b,
r,
n,或
uXXXX在那里
XXXX是一个Unipre“码点”十六进制代码(字符)。
因此,例如,假设以下内容位于文件(或其他数据流)中:
{ "property": "value with an invalidcontrol character in it"}那是无效的JSON,以字符串开头的字符串文字
"value中至少包含一个控制字符(换行符,取决于操作系统,可能是一个或两个控制字符)。
这是我们将如何解决的方法:
{ "property": "value with an validnescape sequence in it"}注意
n换行符曾经所在的位置。
您可以使用http://jsonlint.com来验证JSON,这很容易指出错误所在。
重新编辑:确实是导致问题的换行符:
"distancetot": { "map": "function(doc) {var somme= Math.abs(doc.distancet0- doc.distancet1); if(doc.role=='utilisateur'){ Error is here -------------------------------------------------------------------------------------------------^if(doc.role=='utilisateur'){跟上面的例子一样,后面的换行符是无效的控制字符。


