如何解决JSON.parse:字符串文字中的坏控制字符,在此代码中

IT技术 javascript json
2021-03-16 12:38:23

我是JSON文档的初学者,这是我的代码,所以请帮我解决这个错误。

{
   "_id" : "_design/utilisateur",
   "_rev" : "1-967a00dff5e02add41819138abb3284d",
   "views" : {
    "tous" : { 
        "map" : "function(doc){if (doc.role=='utilisateur') {emit (doc._id,        [['t0',doc.distancet0],['t1',doc.distancet1],['t2',doc.distancet2],['t3',doc.distancet3],    ['t4',doc.distancet4]])}}"
         }, 

    "3500" : {
        "map" : "function(doc) {if (doc.role=='utilisateur' &&     doc.distancet0<3500) {emit(doc._id,doc.distancet0)}}"
        },

        "distancetot" : {
                "map" : "function(doc) {var somme= Math.abs(doc.distancet0-    doc.distancet1); if(doc.role=='utilisateur'){ 
  emit(doc._id, somme);
}}"
                          }    
}           

}
1个回答

错误消息告诉您字符串文字中有一个控制字符,例如,字符代码 8 或 10 或 13 或任何低于 32 的字符(空格)。

该JSON定义告诉我们,你不能在字符串字面控制字符,则必须使用转义序列,如\b\r\n,或\uXXXX在那里XXXX是一个Unicode“码点”十六进制代码(字符)。

例如,假设以下内容在文件(或其他数据流)中:

{
    "property": "value with an invalid
control character in it"
}

这是无效的 JSON,以 开头的字符串文字"value中至少有一个控制字符(换行符,可能是一两个控制字符,具体取决于操作系统)。

这是我们将如何修复它:

{
    "property": "value with an valid\nescape 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'){是一个无效的控制字符,就像我上面的例子一样。

完成了,你很慷慨
2021-04-26 12:38:23
谢谢,这很有用,现在有效:)
2021-05-01 12:38:23