JSON.parse()
Обычно JSON используется для обмена данными с/на веб-сервером.
При получении данных с веб-сервера данные всегда представляют собой строку.
Проанализируйте данные с помощью JSON.parse()
, и данные станут объектом JavaScript.
Пример — разбор JSON
Представьте, что мы получили этот текст с веб-сервера:
'{"name":"John", "age":30, "city":"New York"}'
Используйте функцию JavaScript JSON.parse()
для преобразования текста в объект JavaScript:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
Убедитесь, что текст в формате JSON, иначе вы получите синтаксическую ошибку.
Используйте объект JavaScript на своей странице:
Пример
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Попробуйте сами »
Массив в формате JSON
При использовании JSON.parse()
для JSON, полученного из массива, метод вернет массив JavaScript вместо объекта JavaScript.
Пример
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Попробуйте сами »
Исключения
Даты разбора (анализа)
Объекты даты не разрешены в JSON.
Если вам нужно указать дату, запишите её в виде строки.
Вы можете преобразовать его обратно в объект даты позже:
Пример
Преобразование строки в дату:
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Попробуйте сами »
Или вы можете использовать второй параметр функции JSON.parse()
, который называется reviver.
Параметр reviver — это функция, которая проверяет каждое свойство перед возвратом значения.
Пример
Преобразование строки в дату с помощью функции reviver:
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if (key == "birth") {
return new
Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Попробуйте сами »
Функции синтаксического анализа
Функции не разрешены в JSON.
Если вам нужно включить функцию, запишите её в виде строки.
Вы можете преобразовать его обратно в функцию позже:
Пример
Преобразовать строку в функцию:
const text = '{"name":"John", "age":"function () {return 30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
Попробуйте сами »
Вам следует избегать использования функций в JSON, функции потеряют свою область действия, и вам придётся использовать eval()
, чтобы преобразовать их обратно в функции.