Как сохранить строку JSON в файле JavaScript?

1

String1, ниже, является допустимой строкой JSON, которую я подтвердил здесь. Однако, если я заключу в кавычки и поместу в файл JavaScript, я получу ошибку - неопределенная строковая константа

let json_string = "insert string1 below here";
  • 1
    JSON = JavaScript Обозначение объекта, это строковое представление объекта JavaScript. Когда вы пишете Javascript, вы хотите использовать фигурные скобки и пары ключ: свойство
  • 1
    Возможный дубликат двойной кавычки в строке JavaScript
Теги:

6 ответов

1
Лучший ответ

Для краткости используйте литерал шаблона ES6, как описано здесь:

http://es6-features.org/#StringInterpolation

Он позаботится о проблеме перевода строки, которая преждевременно завершает вашу строку.

Это включает в себя использование символа обратной галочки (') как такового:

let json_string = '
[{ 
    ...
}]';
1

Обычно для этого подхода вы хотите экспортировать некоторую константу

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);
1

Используйте строковый литерал с обратными чертами ('). У вас не будет этой проблемы с кавычками и/или символами новой строки.

  • 0
    Можете ли вы объяснить, почему это работает? Почему моя строка недействительна?
  • 0
    Причина, по которой он не работает, заключается в том, что обычные строки javascript должны заканчиваться до следующего символа новой строки. Для backticks это не так.
Показать ещё 1 комментарий
0

В JS для создания многострочной строки вы должны ставить "\" в конце каждой строки ИЛИ использовать новую "", введенную в es6. С обратной галочкой "" "вам не нужно ставить"\"в конце каждой строки.

Также есть два способа объявить строку с помощью кавычки. "против"

В вашем примере у вас одинаковые кавычки во всем. Вместо этого используйте одинарные кавычки для полной строки и двойные кавычки для объявления ключей json.

0

Используйте символ обратной черты ('), чтобы заключить строку, вместо обычных одинарных/двойных кавычек:

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

  • 1
    Можете ли вы объяснить, почему это работает? Почему моя строка недействительна?
  • 0
    Я только что обновил свой ответ, добавив немного больше информации.
Показать ещё 1 комментарий
-1

Проблема в вашем коде - символ новой строки. Это вызывает разрыв в синтаксисе вашей строки.

Кавычки (') - решение вашей проблемы. Вы можете использовать их для создания многострочных строк.

Смотрите пример здесь:

var string = 'string text line 1
string text line 2'
  • 1
    Следует избегать ответов, содержащих только ссылки на внешние сайты (даже если это официальная документация). Пожалуйста, добавьте объяснение / код для улучшения вашего ответа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню