Записываю json в переменную получаю Uncaught SyntaxError: Unexpected token ILLEGAL

187
18 февраля 2019, 14:20

Записываю json в переменную:

    var json = "{
                  'positions': {
                    '0':{
                          'id':'1',
                          'name':'one'
                        },
                    '1':{
                          'id':'2',
                          'name':'two'
                        },
                    '2':{
                          'id':'3',
                          'name':'three'
                        }
                  }
                }"; 

Получаю ошибку (Uncaught SyntaxError: Unexpected token ILLEGAL) на строку: var json = "{

Я конечно переписал так и ошибок не возникает:

    var json = JSON.stringify({
                  'positions': {
                    '0':{
                          'id':'1',
                          'name':'one'
                        },
                    '1':{
                          'id':'2',
                          'name':'two'
                        },
                    '2':{
                          'id':'3',
                          'name':'three'
                        }
                  }
                }); 

В чем криминал то в первом куске кода?

Answer 1

Потому что строки в JavaScript переносятся не так. Либо так:

var json = "{\n"
   + "               'positions': {\n"
   + "                 '0':{\n"
   + "                       'id':'1',\n"
   + "                       'name':'one'\n"
   + "                     },\n"
   + "                 '1':{\n"
   + "                       'id':'2',\n"
   + "                       'name':'two'\n"
   + "                     },\n"
   + "                 '2':{\n"
   + "                       'id':'3',\n"
   + "                       'name':'three'\n"
   + "                     }\n"
   + "               }\n"
   + "             }"; 

Либо так (обратите внимание на кавычки):

var json = `{
                  'positions': {
                    '0':{
                          'id':'1',
                          'name':'one'
                        },
                    '1':{
                          'id':'2',
                          'name':'two'
                        },
                    '2':{
                          'id':'3',
                          'name':'three'
                        }
                  }
                }`; 
Answer 2

Еще один вариант - экранировать перенос строки:

var json = "{\
  'positions': {\
    '0':{\
          'id':'1',\
          'name':'one'\
        },\
    '1':{\
          'id':'2',\
          'name':'two'\
        },\
    '2':{\
          'id':'3',\
          'name':'three'\
        }\
  }\
}"; 
READ ALSO
Не работает switch (окончание слова, скрипт) [закрыт]

Не работает switch (окончание слова, скрипт) [закрыт]

введите сюда кодhttps://codepenio/anon/pen/YJrVJM

127
Удаление элементов списка с помощью javascript [дубликат]

Удаление элементов списка с помощью javascript [дубликат]

Данный вопрос является точным дубликатом:

142
Задача на Codewars

Задача на Codewars

https://wwwcodewars

184
связка Node.js + MongoDB

связка Node.js + MongoDB

Бот отказывается считывать/изменять данные в MongoDB, хотя новые документы без проблем создаетhttps://gist

123