Skip to content

JSON Parsing

Learn how to use JSON.parse() to convert JSON-formatted strings into JavaScript objects or arrays, including handling dates, functions, and common use cases for web data exchange.

JSON Parsing: JSON.parse()

A common use of JSON is to exchange data to web server and from a web server.

Data received from a web server is always a string.

So, we can parse the data with JSON.parse(), and the data becomes a JavaScript object.

Example

Imagine we received this text from a web server:

'{"name":"John", "age":30, "city":"New York"}'

Use the JavaScript function JSON.parse() to convert text into a JavaScript object:

let obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');

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.

const text = '["Ford", "BMW", "Audi", "Fiat"]';  
const myArr = JSON.parse(text);

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:

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;

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.

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;

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:

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();
Navigation