DEV Community

Cover image for Working with JSON in JavaScript: Parse and Stringify
Sharique Siddiqui
Sharique Siddiqui

Posted on

Working with JSON in JavaScript: Parse and Stringify

JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write, and easy for machines to parse and generate. In JavaScript development, JSON plays a crucial role in exchanging data between a server and a web application.

Two essential methods for working with JSON in JavaScript are JSON.parse() and JSON.stringify(). Let's dive into what they do and how to use them effectively.

What is JSON?

JSON is a text format that represents data objects as a string. It looks very similar to JavaScript object syntax but with strict rules—like double-quoted keys and string values, no functions or undefined values allowed.

When data needs to be sent over the network or saved as text (for example, in local storage or a file), it is usually serialized to JSON.

1. JSON.stringify()

JSON.stringify() takes a JavaScript object or value and converts it into a JSON string. This is useful when you want to send data to a server or store it as text.

Example:
javascript
const user = {
  name: "Sammy",
  age: 30,
  city: "New York"
};

const jsonString = JSON.stringify(user);
console.log(jsonString);
Enter fullscreen mode Exit fullscreen mode
Output:
json
{"name":"Sammy","age":30,"city":"New York"}
Enter fullscreen mode Exit fullscreen mode

The output is a string that follows JSON notation and can be transmitted or stored easily.

Advanced Usage
  • JSON.stringify() can take optional parameters:
  • Replacer function: You can filter or transform values during stringification.
  • Space: Add indentation or spacing for pretty-printing the output.
Example with spacing:
javascript
console.log(JSON.stringify(user, null, 2));
Enter fullscreen mode Exit fullscreen mode
Output:
json
{
  "name": "Sammy",
  "age": 30,
  "city": "New York"
}
Enter fullscreen mode Exit fullscreen mode
2. JSON.parse()

JSON.parse() does the opposite of stringify(): It takes a JSON string and transforms it into a JavaScript object. This is essential when receiving JSON data from a web server.

Example:
javascript
const jsonString = '{"name":"Sammy","age":30,"city":"New York"}';

const user = JSON.parse(jsonString);
console.log(user.name);  // Sammy
Enter fullscreen mode Exit fullscreen mode

If the JSON string is malformed or not valid, JSON.parse() will throw a syntax error.

Reviver Function

JSON.parse() can accept a second argument called a reviver function, which allows you to transform values as they are parsed:

javascript
const jsonString = '{"name":"sammy","age":30}';

const user = JSON.parse(jsonString, (key, value) => {
  if (typeof value === 'string') {
    return value.toUpperCase();
  }
  return value;
});

console.log(user.name);  // SAMMY
Enter fullscreen mode Exit fullscreen mode
Common Use Cases
  • Sending data to a server: Convert JavaScript objects to JSON strings with JSON.stringify() before sending in an HTTP request body.
  • Receiving data from a server: Parse JSON strings from responses using JSON.parse() to convert them into usable objects.
  • Local storage: Store JSON strings in localStorage and parse them back when reading.

JSON.stringify vs JSON.parse

Feature JSON.stringify() JSON.parse()
Converts JS object to a JSON string Yes No
Converts JSON string to JS object No Yes
Used for sending or storing data Yes No
Used for receiving or reading data No Yes
Accepts replacer or reviver functions Yes (replacer) Yes (reviver)
Throws error on invalid data N/A Yes, if string not valid JSON

Final Thoughts

Mastering these two methods will empower you to handle data exchange seamlessly in JavaScript applications, whether you’re building APIs, saving user preferences, or working with complex data structures.

Stay tuned for more insights as you continue your journey into the world of web development!

Check out theYouTubePlaylist for great JavaScript content for basic to advanced topics.

Please Do Subscribe Our YouTube Channel for clearing programming concept and much more ...CodenCloud

Top comments (0)