Подтвердить что ты не робот

Как решить JSON.parse: плохой управляющий символ в строковом литерале, в этом коде

Я новичок в 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);
}}"
                          }    
}           

}
4b9b3361

Ответ 1

Сообщение об ошибке сообщает вам, что у вас есть контрольный символ в строковом литерале, например, код символа 8 или 10 или 13 или что-то ниже 32 (пробел).

Определение JSON говорит нам, что вы не можете иметь буквальные управляющие символы в строковых литералах, вы должны использовать escape-последовательность, такую ​​как \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'){ является недопустимым символом управления, как и в моем примере выше.