Ответ 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'){
является недопустимым символом управления, как и в моем примере выше.