String1, ниже, является допустимой строкой JSON, которую я подтвердил здесь. Однако, если я заключу в кавычки и поместу в файл JavaScript, я получу ошибку - неопределенная строковая константа
let json_string = "insert string1 below here";
Для краткости используйте литерал шаблона ES6, как описано здесь:
http://es6-features.org/#StringInterpolation
Он позаботится о проблеме перевода строки, которая преждевременно завершает вашу строку.
Это включает в себя использование символа обратной галочки (') как такового:
let json_string = '
[{
...
}]';
Обычно для этого подхода вы хотите экспортировать некоторую константу
export const JSON_STRING = // .... stuff
Для многострочных строк вы можете попробовать использовать новые строки шаблона в JS. Просто добавьте обратную черту до и после строки
export const JSON_STRING = '
{
"foo": bar
}
'
Наконец, вы можете не хранить его в виде строки. Просто напишите его как обычный JSON, а затем, когда/если вам нужно его преобразовать, вызовите JSON.stringify
export const JSON_DATA = { ... }
// some other place
let data_as_string = JSON.stringify(JSON_DATA);
Используйте строковый литерал с обратными чертами ('). У вас не будет этой проблемы с кавычками и/или символами новой строки.
В JS для создания многострочной строки вы должны ставить "\" в конце каждой строки ИЛИ использовать новую "", введенную в es6. С обратной галочкой "" "вам не нужно ставить"\"в конце каждой строки.
Также есть два способа объявить строку с помощью кавычки. "против"
В вашем примере у вас одинаковые кавычки во всем. Вместо этого используйте одинарные кавычки для полной строки и двойные кавычки для объявления ключей json.
Используйте символ обратной черты ('), чтобы заключить строку, вместо обычных одинарных/двойных кавычек:
let json_string = '
[{
"link": "https://www.hsph.harvard.edu/nutritionsource/healthy-eating-plate/",
"image": "https://i.imgur.com/xoqLsJq.png",
"title": "Harvard has a nutrition plate and food pyramid",
"summary": "Harvard nutrition experts created these tools to make healthy eating easy.",
"tag": "Diet",
"domain": "hsph.harvard.edu",
"date": "Jan 01, 2018",
"upvotes": "100"
}, {
"link": "https://www.weforum.org/agenda/2017/06/changing-the-way-america-eats-moves-and-connects-one-town-at-a-time/",
"image": "https://i.imgur.com/wSpfyPZ.jpg",
"title": "9 lessons on longevity from 5 blue zones",
"summary": "In certain parts of the world people live abnormally long with good health. They are known as the blue zones.",
"tag": "Health",
"domain": "weforum.org",
"date": "June, 2017"
}]
'
Когда вы заключаете строку с обратными галочками, она становится "строкой шаблона" или "литералом шаблона". Больше информации здесь:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
Проблема в вашем коде - символ новой строки. Это вызывает разрыв в синтаксисе вашей строки.
Кавычки (') - решение вашей проблемы. Вы можете использовать их для создания многострочных строк.
Смотрите пример здесь:
var string = 'string text line 1
string text line 2'