- JSON .parse()
- Example — Parsing JSON
- Example
- Array as JSON
- Example
- Exceptions
- Parsing Dates
- Example
- Example
- Parsing Functions
- Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- JSON.parse()
- Парсинг данных JSON
- Получение данных JSON с сервера
- Массивы как данные JSON
- Парсинг дат
- Парсинг функций
- Поддержка браузерами
- JSON.parse()
- Синтаксис
- Параметры
- Возвращаемое значение
- Выбрасываемые исключения
- Примеры
- Пример: использование метода JSON.parse()
- Пример: использование параметра reviver
- Спецификации
- Совместимость с браузерами
- Смотрите также
JSON .parse()
A common use of JSON is to exchange data to/from a web server.
When receiving data from a web server, the data is always a string.
Parse the data with JSON.parse() , and the data becomes a JavaScript object.
Example — Parsing JSON
Imagine we received this text from a web server:
Use the JavaScript function JSON.parse() to convert text into a JavaScript object:
Make sure the text is in JSON format, or else you will get a syntax error.
Use the JavaScript object in your page:
Example
Array as JSON
When using the JSON.parse() on a JSON derived from an array, the method will return a JavaScript array, instead of a JavaScript object.
Example
Exceptions
Parsing Dates
Date objects are not allowed in JSON.
If you need to include a date, write it as a string.
You can convert it back into a date object later:
Example
Convert a string into a date:
document.getElementById(«demo»).innerHTML = obj.name + «, » + obj.birth;
Or, you can use the second parameter, of the JSON.parse() function, called reviver.
The reviver parameter is a function that checks each property, before returning the value.
Example
Convert a string into a date, using the reviver function:
document.getElementById(«demo»).innerHTML = obj.name + «, » + obj.birth;
Parsing Functions
Functions are not allowed in JSON.
If you need to include a function, write it as a string.
You can convert it back into a function later:
Example
Convert a string into a function:
document.getElementById(«demo»).innerHTML = obj.name + «, » + obj.age();
You should avoid using functions in JSON, the functions will lose their scope, and you would have to use eval() to convert them back into functions.
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
JSON.parse()
Обычно JSON используется для обмена данными с сервером.
При получении с сервера данные всегда передаются в виде строки.
Если обработать эти данные при помощи функции JSON.parse(), то они станут объектом JavaScript.
Парсинг данных JSON
Представьте, что с сервера мы получили такой текст:
Используем JavaScript функцию JSON.parse(), чтобы преобразовать этот текст в объект JavaScript:
Внимание! Убедитесь, что преобразуемый текст записан в формате JSON, иначе вы получите ошибку синтаксиса.
Используем полученный объект JavaScript на странице:
Получение данных JSON с сервера
Получить данные JSON с сервера можно, например, используя запрос AJAX.
Так как ответ сервера записан в формате JSON, вы можете преобразовать строку в объект JavaScript.
В следующем примере используется XMLHttpRequest, чтобы получить данные с сервера:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() < if (this.readyState == 4 && this.status == 200) < var myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; >>; xmlhttp.open("GET", "json_demo.txt", true); xmlhttp.send();
Массивы как данные JSON
Если функция JSON.parse() используется для парсинга данных JSON, полученных из массива, то будет возвращен массив JavaScript, а не объект.
В следующем примере возвращенные с сервера данные JSON являются массивом:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() < if (this.readyState == 4 && this.status == 200) < var myArr = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myArr[0]; >>; xmlhttp.open("GET", "json_demo_array.txt", true); xmlhttp.send();
Парсинг дат
Объекты даты и времени (тип Date) нельзя использовать в JSON.
Если вам необходимо включить в данные дату, записывайте ее как строку.
Когда это потребуется, вы сможете преобразовать ее обратно в объект:
var text = '< "name":"John", "birth":"1986-12-14", "city":"New York">'; var obj = JSON.parse(text); obj.birth = new Date(obj.birth); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Либо можно воспользоваться вторым параметром функции JSON.parse().
В качестве второго параметра передается функция, которая проверяет каждое свойство перед тем, как вернуть его значение.
В следующем примере строка преобразуется в объект даты, при помощи второго параметра JSON.parse():
var text = '< "name":"John", "birth":"1986-12-14", "city":"New York">'; var 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.
Если вам необходимо включить в данные функцию, записывайте ее как строку.
Когда это потребуется, вы сможете преобразовать ее обратно в функцию:
var text = '< "name":"John", "age":"function () ", "city":"New York">'; var obj = JSON.parse(text); obj.age = eval("(" + obj.age + ")"); document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
Внимание! Следует избегать использования функций в JSON, так как в этом случае теряется их область видимости, а для обратного преобразования приходится использовать функцию eval(), что нежелательно.
Поддержка браузерами
Функция JSON.parse() включена во все основные браузеры и в последний стандарт ECMAScript (JavaScript).
JSON.parse()
Метод JSON.parse() разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения.
Синтаксис
Параметры
Разбираемая строка JSON. Смотрите документацию по объекту JSON для описания синтаксиса JSON.
Если параметр является функцией, определяет преобразование полученного в процессе разбора значения, прежде, чем оно будет возвращено вызывающей стороне.
Возвращаемое значение
Возвращает объект Object , соответствующий переданной строке JSON text .
Выбрасываемые исключения
Выбрасывает исключение SyntaxError , если разбираемая строка не является правильным JSON.
Примеры
Пример: использование метода JSON.parse()
JSON.parse('<>'); // <> JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null
Пример: использование параметра reviver
Если определён параметр reviver , значение, вычисляемое при разборе строки, будет преобразовано перед его возвратом. В частности, вычисленное значение и все его свойства (начиная с самых вложенных свойств и кончая самим значением), каждое проходят через функцию reviver , которая вызывается с контекстом this , содержащим объект в виде обрабатываемого свойства, и с аргументами: именем свойства в виде строки и значением свойства. Если функция reviver вернёт undefined (либо вообще не вернёт никакого значения, например, если выполнение достигнет конца функции), свойство будет удалено из объекта. В противном случае свойство будет переопределено возвращаемым значением.
В конечном итоге, функция reviver вызывается с пустой строкой и самым верхним значением, чтобы обеспечить преобразование самого верхнего значения. Убедитесь, что вы правильно обрабатываете этот случай — обычно для этого нужно просто вернуть само значение — или метод JSON.parse() вернёт undefined .
JSON.parse('', function(k, v) if (k === '') return v; > // самое верхнее значение - возвращаем его return v * 2; // иначе возвращаем v * 2. >); // JSON.parse('>>', function(k, v) console.log(k); // пишем имя текущего свойства, последним именем будет "" return v; // возвращаем неизменённое значение свойства >); // 1 // 2 // 4 // 6 // 5 // 3 // ""
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 5.1 (ECMA-262) Определение ‘JSON.parse’ в этой спецификации. | Стандарт | Изначальное определение. Реализована в JavaScript 1.7. |
ECMAScript 2015 (6th Edition, ECMA-262) Определение ‘JSON.parse’ в этой спецификации. | Стандарт |
Совместимость с браузерами
BCD tables only load in the browser