Programming 5 min read

JSON Explained: The Universal Language of Data

Suresh S Suresh S
JSON Explained: The Universal Language of Data

If you have ever built a website, used a mobile app, or interacted with an API, you have almost certainly encountered JSON. It is everywhere.

But what exactly is it? And why has it become the standard format for moving data across the internet?

In this guide, we will break down JSON in plain English, covering its syntax, structure, how to use it, common pitfalls, and why it won the war against XML.


What is JSON?

JSON stands for JavaScript Object Notation. Despite having “JavaScript” in the name, it is a language-independent data format. This means that almost every programming language—Python, Java, C#, PHP, Ruby, and even JavaScript—knows how to read and write JSON.

The Problem It Solves

Imagine you have a user database on a server, and you want to send that user’s information to a web browser. The server and the browser speak different “languages.” JSON acts as the translator—a simple, text-based format that is easy for humans to read and easy for machines to parse (break down and understand).

Essentially, JSON is a way to store information in an organized, easy-to-access manner. It is the duct tape of the modern web.


JSON Syntax: The Golden Rules

JSON syntax is derived from JavaScript object syntax, but it is much stricter. There are only three cardinal rules:

  1. Data is in Name/Value Pairs: Data is written as a key (name) and a value, separated by a colon.
    • Example: "name": "John"
  2. Data is Separated by Commas: Just like a grocery list, each pair is separated by a comma.
    • Example: "name": "John", "age": 30
  3. Curly Braces Hold Objects & Square Brackets Hold Arrays:
    • Curly braces {} represent a single object (like a record in a database).
    • Square brackets [] represent an array (a list of things).

Important Syntax Rules (Must Remember!)

  • Keys must be wrapped in double quotes: "firstName" is valid; firstName is invalid.
  • Strings must be in double quotes: "Hello" is valid; 'Hello' is invalid (single quotes aren’t allowed).
  • No trailing commas: In an array or object, the last item cannot have a comma after it.

JSON Data Types

Before we look at arrays and objects, we need to know what values we can store. JSON supports only these six data types:

  1. String: "Hello World" (must be in double quotes)
  2. Number: 25 or 3.14 (integers and floats, no quotes)
  3. Boolean: true or false (lowercase, no quotes)
  4. Null: null (represents an empty value)
  5. Object: { "key": "value" } (nested data)
  6. Array: [ "apple", "banana" ] (lists)

1. JSON Objects

A JSON Object is an unordered collection of key/value pairs enclosed in curly braces {}. Think of it as a single “person” or “product” file.

Example:

{
  "firstName": "Jane",
  "lastName": "Doe",
  "age": 28,
  "isEmployed": true
}

To access the data, you refer to the key. For example, object.firstName would return "Jane".


2. JSON Arrays

A JSON Array is an ordered list of values enclosed in square brackets []. Arrays are incredibly useful for sending lists of data, like search results or a shopping cart.

Example (A list of colors):

[ "Red", "Green", "Blue" ]

Example (A list of Objects): This is where the magic happens. An array can contain multiple objects:

[
  { "name": "Laptop", "price": 999 },
  { "name": "Mouse", "price": 25 },
  { "name": "Keyboard", "price": 80 }
]

3. Nested JSON (Objects Inside Objects)

This is the most powerful feature of JSON. You can place objects inside other objects to create complex, hierarchical data structures. This is how real-world applications model relationships.

Example: A user with an address and a list of phone numbers.

{
  "id": 101,
  "name": "Sarah Connor",
  "address": {
    "street": "123 Main St",
    "city": "Los Angeles",
    "zipCode": "90210"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "555-1234"
    },
    {
      "type": "work",
      "number": "555-5678"
    }
  ],
  "isActive": true
}

How to access nested data:

  • To get “Los Angeles”: data.address.city
  • To get “555-5678”: data.phoneNumbers[1].number

4. Validating JSON

Because JSON is so strict, a single misplaced comma or quote will break the entire file (unlike HTML, which is forgiving). This is why JSON validation is essential.

Common Validation Checks:

  • Are all keys and strings wrapped in double quotes?
  • Are there no trailing commas after the last item?
  • Are all brackets [] and braces {} properly closed?

How to Validate:

  • Use online tools like JSONLint or JSON Formatter.
  • Use VS Code extensions (like “Prettier” or “JSON Tools”) which will highlight syntax errors in red.
  • Use your browser’s console (via JSON.parse()) to test code snippets.

5. Parsing JSON (Converting to Code)

A raw JSON string is just text—it looks like a string of characters. To use it in your code (e.g., to access user.name), you must parse it into a native object.

In JavaScript:

// 1. A raw JSON string (text)
const jsonString = '{"name": "Alex", "age": 30}';

// 2. Parse the string into a usable JavaScript Object
const user = JSON.parse(jsonString);

console.log(user.name); // Outputs: Alex

In Python:

import json

# Raw JSON string
json_string = '{"name": "Alex", "age": 30}'

# Parse to a Python dictionary
user = json.loads(json_string)

print(user["name"]) # Outputs: Alex

The Reverse (Stringifying): If you want to send data from your app to a server, you must do the opposite (turn an object into a string).

const user = { name: "Alex", age: 30 };
const jsonString = JSON.stringify(user);
console.log(jsonString); // Outputs: '{"name":"Alex","age":30}'

6. Common JSON Errors (And How to Fix Them)

Even experienced developers make these mistakes. Here are the “Big Three” JSON errors:

Error 1: Trailing Commas

The Mistake:

{
  "name": "John",
  "age": 30,   // <-- ERROR: That comma shouldn't be there!
}

The Fix: Remove the comma after 30. The last property in an object (or array) must never have a comma after it.

Error 2: Using Single Quotes

The Mistake:

{ 'name': 'John' }

The Fix: JSON strictly requires double quotes " " for both keys and string values.

{ "name": "John" }

Error 3: Unquoted Keys

The Mistake:

{ name: "John" }

The Fix: Wrap the key in double quotes.

{ "name": "John" }

7. JSON vs XML (The Battle for Data)

Before JSON took over, the standard format for data transmission was XML (Extensible Markup Language). While XML is still used in legacy systems, JSON is almost universally preferred today.

Here is the side-by-side comparison:

FeatureJSONXML
Full NameJavaScript Object NotationExtensible Markup Language
ReadabilityVery clean, minimal syntax.Bulky, cluttered with tags.
Data StructureUses arrays [] and objects {}.Uses a tree of nodes/attributes.
Parsing SpeedFaster and lighter.Slower because it requires an XML parser (DOM manipulation).
Data SizeMuch smaller (no closing tags).Much larger (requires opening and closing tags).
CommentsNot allowed (by spec, though some use hacks).Supports <!-- comments -->.
Browser SupportNatively supported via JSON.parse().Requires additional parsing libraries (historically).

Visual Comparison: Imagine we want to send a “person” object.

JSON:

{
  "person": {
    "name": "John",
    "age": 30
  }
}

(26 characters)

XML:

<person>
  <name>John</name>
  <age>30</age>
</person>

(48 characters)


Summary

JSON is the backbone of modern web development. It is lightweight, readable, and universally supported across all major programming languages.

Key Takeaways:

  1. What it is: A text-based data interchange format.
  2. Syntax: Keys and strings in double quotes " "; no trailing commas.
  3. Structure: Objects {} and Arrays [] can be infinitely nested.
  4. Usage: Use JSON.parse() to read it, and JSON.stringify() to send it.
  5. Validation: Always validate your JSON to avoid silent errors.
  6. VS XML: JSON is smaller, faster, and easier to read than XML.

Whether you are pulling weather data from an API or configuring a game settings file, mastering JSON is an essential skill for any developer.

Suresh S

Written by Suresh S

Systems Engineer & Tech Educator with 10+ years of experience in Linux Administration, Cloud Computing, and Cybersecurity. Founder of FreeTechLearner, dedicated to creating practical tutorials that help students and professionals build real-world skills.

Share this post:

Discussion

Loading comments...