От текста к объектам и обратно
Для скрипта JSON — это просто текст. Прежде чем работать с данными, нужно превратить текст в массивы и объекты. Это делает JSON.parse():
const text = `{ "name": "Осло", "temperature": 5 }`;
console.log(text.temperature);
const city = JSON.parse(text);
console.log(city.temperature + 1);undefined
6Текст записан в обратных кавычках, чтобы внутри могли быть двойные. Пока это текст, у него нет свойства temperature, поэтому text.temperature равно undefined. JSON.parse() читает текст и возвращает настоящий объект, свойства которого можно читать и менять. Если текст — не корректный JSON, выполнение заканчивается ошибкой SyntaxError.
JSON.stringify() делает обратное: превращает массив или объект в текст JSON.
const city = { name: "Рим", temperature: 21 };
console.log(JSON.stringify(city));{"name":"Рим","temperature":21}В результате все ключи стоят в двойных кавычках, как того требует JSON, и нет пробелов. Зачем это нужно? Данные можно передавать и хранить только в виде текста. Когда страница отправляет данные на сервер или сохраняет их в браузере (этим вы займётесь позже в этом уроке), она сначала превращает их в текст с помощью JSON.stringify(). А когда получает текст обратно, JSON.parse() снова делает из него массивы и объекты.
Задание
- 1
Превратите
forecastTextв массив с помощьюJSON.parse()и сохраните его в константуforecast. Затем для каждого города изforecastдобавьте вcityListэлементliс текстом вродеЛондон: 12 °C. - 2
В
sunnyTextпокажите в формате JSON города, где солнечно: с помощьюfilter()составьте массив только из солнечных городов и превратите его в текст черезJSON.stringify(). Посмотрите на результат: это те же данные, что и вforecastText, только без остальных городов, пробелов и переносов строк.