JSON Format: Complete Guide with Examples for 2026

February 11, 2026

JSON (JavaScript Object Notation) is the most widely used data interchange format on the web. If you work with APIs, configuration files, databases, or any kind of data exchange between systems, you work with JSON. This comprehensive guide covers everything you need to know about JSON — from basic syntax rules to advanced best practices, with practical examples at every step.

Whether you are a beginner learning JSON for the first time or an experienced developer looking for a thorough reference, this guide has you covered. We will walk through JSON syntax, data types, real-world use cases, how to work with JSON in JavaScript and Python, JSON Schema, common errors and how to fix them, and much more.

1. What is JSON?

JSON stands for JavaScript Object Notation. It is a lightweight, text-based data interchange format that is easy for humans to read and write, and easy for machines to parse and generate. JSON is language-independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others.

A Brief History of JSON

JSON was first specified by Douglas Crockford in the early 2000s. Crockford recognized that JavaScript object literals provided a convenient and readable notation for structuring data, and he formalized this into a standalone data format. The key milestones in JSON's history include:

Why JSON Won

Before JSON, XML was the dominant format for data interchange. JSON rapidly overtook XML for most use cases because of several advantages:

Today, JSON is the default format for REST APIs, NoSQL databases like MongoDB and CouchDB, configuration files, and inter-service communication in microservice architectures.

⚙ Try it: Paste any JSON into our JSON Formatter to instantly beautify, validate, and explore it.

2. JSON Syntax Rules

JSON syntax is derived from JavaScript object notation, but it is stricter. Here are the fundamental rules you must follow:

Rule 1: Data is in key/value pairs

A key/value pair consists of a key (which must be a double-quoted string) followed by a colon, followed by a value:

"name": "Alice"

Rule 2: Data is separated by commas

Multiple key/value pairs are separated by commas. There must be no trailing comma after the last pair:

{
  "name": "Alice",
  "age": 30,
  "city": "Berlin"
}

Rule 3: Curly braces hold objects

A JSON object is enclosed in curly braces {}. An object contains zero or more key/value pairs:

{
  "firstName": "Bob",
  "lastName": "Smith"
}

Rule 4: Square brackets hold arrays

A JSON array is an ordered list of values enclosed in square brackets []:

{
  "fruits": ["apple", "banana", "cherry"]
}

Rule 5: Keys must be double-quoted strings

Unlike JavaScript, JSON requires all keys to be wrapped in double quotes. Single quotes are not valid:

// INVALID JSON
{name: "Alice"}
{'name': "Alice"}

// VALID JSON
{"name": "Alice"}

Rule 6: Strings must use double quotes

String values must also use double quotes, not single quotes:

// INVALID
{"greeting": 'hello'}

// VALID
{"greeting": "hello"}

Rule 7: No comments allowed

Standard JSON does not support comments. This is one of the most common sources of frustration. If you need comments in configuration files, consider using JSONC (JSON with Comments), JSON5, YAML, or TOML instead.

Rule 8: No trailing commas

A trailing comma after the last element in an object or array is a syntax error:

// INVALID - trailing comma
{
  "a": 1,
  "b": 2,
}

// VALID
{
  "a": 1,
  "b": 2
}
⚙ Try it: Not sure if your JSON is valid? Use our JSON Validator to check your syntax instantly with detailed error messages.

3. JSON Data Types Explained with Examples

JSON supports exactly six data types. Understanding each one is essential for working with JSON correctly.

String

A string is a sequence of zero or more Unicode characters, wrapped in double quotes. Strings support escape sequences for special characters:

{
  "name": "Alice Johnson",
  "greeting": "Hello, \"World\"!",
  "path": "C:\\Users\\alice",
  "newline": "Line 1\nLine 2",
  "tab": "Col1\tCol2",
  "unicode": "Caf\u00e9",
  "emoji": "\uD83D\uDE00"
}

The supported escape sequences are: \" (quotation mark), \\ (backslash), \/ (forward slash), \b (backspace), \f (form feed), \n (newline), \r (carriage return), \t (tab), and \uXXXX (Unicode character).

Number

JSON numbers can be integers or floating-point. They can be negative and can use exponential (scientific) notation. JSON does not distinguish between integer and float types — they are all just "number":

{
  "integer": 42,
  "negative": -17,
  "float": 3.14159,
  "exponent": 2.998e8,
  "negativeExponent": 6.674e-11,
  "zero": 0
}

Important: JSON does not support NaN, Infinity, or -Infinity. Hexadecimal (0xFF), octal (0o77), or leading zeros (007) are also not allowed.

Boolean

Booleans are either true or false (lowercase only, without quotes):

{
  "isActive": true,
  "isDeleted": false
}

Null

The null value represents an empty or unknown value (lowercase, without quotes):

{
  "middleName": null,
  "deletedAt": null
}

Object

An object is an unordered collection of key/value pairs enclosed in curly braces:

{
  "user": {
    "id": 1,
    "name": "Alice",
    "email": "alice@example.com"
  }
}

Array

An array is an ordered collection of values enclosed in square brackets. Values in an array do not need to be the same type:

{
  "tags": ["javascript", "python", "go"],
  "matrix": [[1, 2], [3, 4]],
  "mixed": [42, "hello", true, null, {"key": "value"}]
}
⚙ Try it: Explore the structure of any JSON document with our JSON Viewer — it gives you a collapsible tree view with type highlighting for every value.

4. Nested JSON Structures

One of JSON's strengths is its ability to represent complex, hierarchical data through nesting. Objects can contain other objects, arrays can contain objects, and you can nest to arbitrary depth.

Objects Inside Objects

{
  "company": {
    "name": "Acme Corp",
    "address": {
      "street": "123 Main St",
      "city": "Springfield",
      "state": "IL",
      "zip": "62704",
      "country": "US"
    },
    "contact": {
      "phone": "+1-555-0100",
      "email": "info@acme.example.com"
    }
  }
}

Arrays of Objects

This is the most common pattern you will encounter in API responses:

{
  "users": [
    {
      "id": 1,
      "name": "Alice",
      "roles": ["admin", "editor"]
    },
    {
      "id": 2,
      "name": "Bob",
      "roles": ["viewer"]
    },
    {
      "id": 3,
      "name": "Charlie",
      "roles": ["editor", "moderator"]
    }
  ]
}

Complex Real-World Example

Here is a realistic example of a JSON response from a product API:

{
  "product": {
    "id": "prod_abc123",
    "name": "Wireless Headphones",
    "price": 79.99,
    "currency": "USD",
    "inStock": true,
    "categories": ["electronics", "audio", "wireless"],
    "specifications": {
      "brand": "SoundMax",
      "weight": "250g",
      "battery": {
        "capacity": "800mAh",
        "life": "30 hours",
        "chargingTime": "2 hours"
      },
      "connectivity": ["Bluetooth 5.3", "3.5mm jack"]
    },
    "reviews": [
      {
        "author": "Jane D.",
        "rating": 5,
        "comment": "Excellent sound quality!",
        "date": "2026-01-15"
      },
      {
        "author": "Mike R.",
        "rating": 4,
        "comment": "Great battery life, slightly tight fit.",
        "date": "2026-01-20"
      }
    ],
    "metadata": {
      "createdAt": "2025-12-01T10:30:00Z",
      "updatedAt": "2026-02-01T14:22:00Z"
    }
  }
}
⚙ Try it: Need to find a specific value in a deeply nested JSON? Use our JSON Path Finder to click on any value and get the exact path to it.

5. JSON vs XML vs YAML Comparison

JSON, XML, and YAML are the three most common data serialization formats. Each has its strengths. Here is a detailed comparison.

The Same Data in Three Formats

JSON:

{
  "employee": {
    "name": "Alice Johnson",
    "age": 30,
    "department": "Engineering",
    "skills": ["Python", "JavaScript", "SQL"],
    "active": true
  }
}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<employee>
  <name>Alice Johnson</name>
  <age>30</age>
  <department>Engineering</department>
  <skills>
    <skill>Python</skill>
    <skill>JavaScript</skill>
    <skill>SQL</skill>
  </skills>
  <active>true</active>
</employee>

YAML:

employee:
  name: Alice Johnson
  age: 30
  department: Engineering
  skills:
    - Python
    - JavaScript
    - SQL
  active: true

Comparison Table

Feature JSON XML YAML
Readability Good Verbose Excellent
File size Small Large Smallest
Comments Not supported Supported Supported
Data types String, Number, Boolean, Null, Object, Array Everything is text String, Number, Boolean, Null, Object, Array, Date
Parsing speed Fast Slow Medium
Schema support JSON Schema XSD, DTD, RelaxNG Limited
Use case APIs, data exchange Documents, SOAP, legacy Config files, DevOps
Whitespace sensitive No No Yes (indentation)

When to Use Each Format

⚙ Try it: Need to convert between formats? Use our JSON to YAML Converter or XML to JSON Converter for instant, accurate conversions.

6. Common JSON Use Cases

JSON has become ubiquitous in modern software development. Here are the most common ways it is used.

REST APIs

JSON is the default format for REST API request and response bodies. Nearly every modern web service returns JSON:

// API Request (POST /api/users)
{
  "name": "Alice",
  "email": "alice@example.com",
  "role": "developer"
}

// API Response
{
  "status": "success",
  "data": {
    "id": 42,
    "name": "Alice",
    "email": "alice@example.com",
    "role": "developer",
    "createdAt": "2026-02-11T10:30:00Z"
  }
}

Configuration Files

Many tools and frameworks use JSON for configuration: package.json (Node.js), tsconfig.json (TypeScript), .eslintrc.json (ESLint), composer.json (PHP), and appsettings.json (.NET):

// package.json
{
  "name": "my-app",
  "version": "2.1.0",
  "scripts": {
    "start": "node server.js",
    "test": "jest --coverage",
    "build": "webpack --mode production"
  },
  "dependencies": {
    "express": "^4.18.2",
    "cors": "^2.8.5"
  }
}

NoSQL Databases

Document databases like MongoDB, CouchDB, and Firebase Firestore store data as JSON (or BSON, a binary form of JSON):

// MongoDB document
{
  "_id": "507f1f77bcf86cd799439011",
  "title": "JSON Complete Guide",
  "author": "DevToolbox",
  "tags": ["json", "tutorial", "web-development"],
  "views": 15230,
  "published": true,
  "comments": [
    {
      "user": "developer42",
      "text": "Great article!",
      "timestamp": "2026-02-10T08:15:00Z"
    }
  ]
}

Local Storage and Session Storage

Browser web storage APIs store data as strings. JSON.stringify and JSON.parse are used to save and retrieve structured data:

// Save to localStorage
const userPrefs = {
  theme: "dark",
  language: "en",
  fontSize: 16
};
localStorage.setItem("preferences", JSON.stringify(userPrefs));

// Read from localStorage
const saved = JSON.parse(localStorage.getItem("preferences"));

Data Exchange Between Microservices

JSON is the standard format for message passing in microservice architectures, whether through REST, GraphQL, message queues (RabbitMQ, Kafka), or WebSockets.

Logging and Analytics

Structured logging with JSON makes log data queryable and machine-parseable. Tools like Elasticsearch, Splunk, and Datadog work natively with JSON logs:

{
  "timestamp": "2026-02-11T14:22:33Z",
  "level": "error",
  "service": "auth-service",
  "message": "Login failed",
  "context": {
    "userId": "user_123",
    "ip": "192.168.1.50",
    "reason": "invalid_password",
    "attempts": 3
  }
}

7. JSON in JavaScript

JavaScript has built-in support for JSON through the global JSON object. The two primary methods are JSON.parse() and JSON.stringify().

JSON.parse() — Converting JSON to JavaScript

Use JSON.parse() to convert a JSON string into a JavaScript object:

const jsonString = '{"name": "Alice", "age": 30, "active": true}';
const user = JSON.parse(jsonString);

console.log(user.name);    // "Alice"
console.log(user.age);     // 30
console.log(user.active);  // true

JSON.parse() with a Reviver Function

The optional second parameter lets you transform values during parsing. This is commonly used to convert date strings into Date objects:

const json = '{"name": "Alice", "joinDate": "2026-01-15T10:00:00Z"}';

const user = JSON.parse(json, (key, value) => {
  // Convert ISO date strings to Date objects
  if (key === "joinDate") {
    return new Date(value);
  }
  return value;
});

console.log(user.joinDate instanceof Date); // true
console.log(user.joinDate.getFullYear());   // 2026

JSON.stringify() — Converting JavaScript to JSON

Use JSON.stringify() to convert a JavaScript value into a JSON string:

const user = {
  name: "Alice",
  age: 30,
  hobbies: ["reading", "coding"]
};

// Compact output
const compact = JSON.stringify(user);
// '{"name":"Alice","age":30,"hobbies":["reading","coding"]}'

// Pretty-printed with 2-space indentation
const pretty = JSON.stringify(user, null, 2);
// {
//   "name": "Alice",
//   "age": 30,
//   "hobbies": [
//     "reading",
//     "coding"
//   ]
// }

The Replacer Parameter

The second parameter of JSON.stringify() controls which properties are included or how values are transformed:

const user = {
  name: "Alice",
  email: "alice@example.com",
  password: "s3cret!",
  role: "admin"
};

// Array replacer: include only specific keys
const safe = JSON.stringify(user, ["name", "email", "role"], 2);
// { "name": "Alice", "email": "alice@example.com", "role": "admin" }

// Function replacer: transform or filter values
const filtered = JSON.stringify(user, (key, value) => {
  if (key === "password") return undefined; // omit
  if (key === "email") return value.replace(/@.*/, "@***"); // mask
  return value;
}, 2);
// { "name": "Alice", "email": "alice@***", "role": "admin" }

Custom toJSON() Method

Objects can define a toJSON() method to control their own serialization:

class User {
  constructor(name, email, password) {
    this.name = name;
    this.email = email;
    this.password = password;
  }

  toJSON() {
    return {
      name: this.name,
      email: this.email
      // password is intentionally excluded
    };
  }
}

const user = new User("Alice", "alice@example.com", "s3cret!");
console.log(JSON.stringify(user, null, 2));
// { "name": "Alice", "email": "alice@example.com" }

Fetch API with JSON

Working with JSON in the Fetch API is straightforward:

// GET request - reading JSON
const response = await fetch("https://api.example.com/users/1");
const user = await response.json();

// POST request - sending JSON
const newUser = await fetch("https://api.example.com/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    name: "Bob",
    email: "bob@example.com"
  })
});
const result = await newUser.json();
⚙ Try it: Working with TypeScript? Convert any JSON response to TypeScript interfaces instantly with our JSON to TypeScript Converter.

8. JSON in Python

Python includes a built-in json module in its standard library. No installation required.

Parsing JSON (json.loads)

import json

json_string = '{"name": "Alice", "age": 30, "skills": ["Python", "SQL"]}'
data = json.loads(json_string)

print(data["name"])     # Alice
print(data["skills"])   # ['Python', 'SQL']
print(type(data))       # <class 'dict'>

Creating JSON (json.dumps)

import json

user = {
    "name": "Alice",
    "age": 30,
    "active": True,     # Python True becomes JSON true
    "manager": None      # Python None becomes JSON null
}

# Compact output
compact = json.dumps(user)
# '{"name": "Alice", "age": 30, "active": true, "manager": null}'

# Pretty-printed
pretty = json.dumps(user, indent=2)

# Sorted keys (useful for consistent output)
sorted_json = json.dumps(user, indent=2, sort_keys=True)

Reading and Writing JSON Files

import json

# Write JSON to a file
data = {"users": [{"name": "Alice"}, {"name": "Bob"}]}
with open("data.json", "w") as f:
    json.dump(data, f, indent=2)

# Read JSON from a file
with open("data.json", "r") as f:
    loaded = json.load(f)

print(loaded["users"][0]["name"])  # Alice

Python-JSON Type Mapping

Python JSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

Custom Serialization with JSONEncoder

To serialize objects that are not natively JSON-serializable (like datetime, set, or custom classes), create a custom encoder:

import json
from datetime import datetime, date

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (datetime, date)):
            return obj.isoformat()
        if isinstance(obj, set):
            return list(obj)
        return super().default(obj)

data = {
    "event": "deployment",
    "timestamp": datetime(2026, 2, 11, 14, 30),
    "tags": {"production", "v2.1"}
}

print(json.dumps(data, cls=CustomEncoder, indent=2))
# {
#   "event": "deployment",
#   "timestamp": "2026-02-11T14:30:00",
#   "tags": ["production", "v2.1"]
# }
⚙ Try it: Building a Go backend? Use our JSON to Go Struct Converter to generate Go structs from any JSON response. Also available: JSON to Dart for Flutter developers.

9. JSON Schema Basics

JSON Schema is a vocabulary that lets you annotate and validate JSON documents. It describes the structure, types, and constraints that a JSON document must follow. Think of it as a type system for JSON.

Why Use JSON Schema?

A Complete JSON Schema Example

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "User",
  "description": "A user account in the system",
  "type": "object",
  "required": ["name", "email", "age"],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The user's full name"
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "The user's email address"
    },
    "age": {
      "type": "integer",
      "minimum": 0,
      "maximum": 150,
      "description": "The user's age in years"
    },
    "role": {
      "type": "string",
      "enum": ["admin", "editor", "viewer"],
      "default": "viewer"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "uniqueItems": true,
      "maxItems": 10
    },
    "address": {
      "type": "object",
      "properties": {
        "street": { "type": "string" },
        "city": { "type": "string" },
        "zip": { "type": "string", "pattern": "^[0-9]{5}$" }
      },
      "required": ["street", "city"]
    }
  },
  "additionalProperties": false
}

Common Schema Keywords

Validating JSON Against a Schema

In JavaScript with Ajv (the fastest JSON Schema validator):

import Ajv from "ajv";

const ajv = new Ajv();
const validate = ajv.compile(schema);
const valid = validate(data);

if (!valid) {
  console.log(validate.errors);
  // [{ instancePath: '/age', message: 'must be integer' }]
}

In Python with jsonschema:

from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "required": ["name", "email"],
    "properties": {
        "name": {"type": "string", "minLength": 1},
        "email": {"type": "string", "format": "email"}
    }
}

try:
    validate(instance={"name": "", "email": "not-an-email"}, schema=schema)
except ValidationError as e:
    print(f"Validation error: {e.message}")
⚙ Try it: Validate your JSON against any schema with our JSON Schema Validator — it supports the latest JSON Schema draft and gives clear error messages.

10. Common JSON Errors and How to Fix Them

Even experienced developers run into JSON errors. Here are the most common ones with clear explanations and fixes.

Error 1: Trailing Comma

// BROKEN
{
  "name": "Alice",
  "age": 30,     <-- trailing comma!
}

// FIX: Remove the trailing comma
{
  "name": "Alice",
  "age": 30
}

Error 2: Single Quotes Instead of Double Quotes

// BROKEN
{'name': 'Alice'}

// FIX: Use double quotes for all keys and string values
{"name": "Alice"}

Error 3: Unquoted Keys

// BROKEN (valid JavaScript, invalid JSON)
{name: "Alice", age: 30}

// FIX: Quote all keys
{"name": "Alice", "age": 30}

Error 4: Comments in JSON

// BROKEN
{
  // This is a comment
  "name": "Alice"  /* another comment */
}

// FIX: Remove all comments (JSON does not support them)
{
  "name": "Alice"
}

Error 5: Unescaped Special Characters in Strings

// BROKEN - unescaped backslash and control characters
{"path": "C:\new\folder"}

// FIX: Escape backslashes
{"path": "C:\\new\\folder"}

Error 6: Undefined Values

// BROKEN - undefined is not a JSON value
{"status": undefined}

// FIX: Use null instead
{"status": null}

Error 7: Missing or Extra Brackets

// BROKEN - missing closing bracket
{
  "users": [
    {"name": "Alice"},
    {"name": "Bob"}

}

// FIX: Add the missing closing bracket
{
  "users": [
    {"name": "Alice"},
    {"name": "Bob"}
  ]
}

Error 8: Duplicate Keys

// PROBLEMATIC - duplicate "name" key (behavior is undefined per spec)
{
  "name": "Alice",
  "age": 30,
  "name": "Bob"
}

// FIX: Ensure each key is unique within its object
{
  "firstName": "Alice",
  "lastName": "Bob",
  "age": 30
}

Error 9: Number Precision Loss

// PROBLEMATIC in JavaScript - number exceeds safe integer range
{"id": 9007199254740993}
// After JSON.parse(): id becomes 9007199254740992 (rounded!)

// FIX: Use string IDs for large numbers
{"id": "9007199254740993"}
⚙ Try it: Paste your broken JSON into our JSON Formatter — it pinpoints the exact line and character where the error occurs. For comparing two JSON files to find differences, use our JSON Diff tool.

11. JSON Best Practices

Follow these best practices to write clean, maintainable, and efficient JSON.

Naming Conventions

Choose one naming convention and stick with it across your entire API:

// camelCase (most common for JavaScript/TypeScript APIs)
{"firstName": "Alice", "lastName": "Johnson", "dateOfBirth": "1996-03-15"}

// snake_case (common for Python/Ruby APIs)
{"first_name": "Alice", "last_name": "Johnson", "date_of_birth": "1996-03-15"}

// kebab-case (avoid - requires bracket notation in JS)
{"first-name": "Alice"}  // data["first-name"] - awkward

Use Consistent Types

A field should always be the same type. Do not return a string sometimes and a number other times:

// BAD: inconsistent types
{"price": "19.99"}  // string in one response
{"price": 19.99}    // number in another

// GOOD: always use the same type
{"price": 19.99}    // always a number

Use null Instead of Missing Fields (or Vice Versa)

Decide on a convention: either include null values for empty fields, or omit them entirely. Be consistent:

// Convention 1: Include null values (explicit)
{"name": "Alice", "middleName": null, "phone": null}

// Convention 2: Omit empty fields (implicit)
{"name": "Alice"}

Use ISO 8601 for Dates

Always use ISO 8601 format for dates and timestamps:

// GOOD: ISO 8601 with timezone
{"createdAt": "2026-02-11T14:30:00Z"}
{"date": "2026-02-11"}

// BAD: ambiguous formats
{"createdAt": "02/11/2026"}     // US or international?
{"createdAt": "11 Feb 2026"}    // hard to parse
{"createdAt": 1739284200}       // Unix timestamp - not human-readable

Envelope Your API Responses

Wrap API responses in a consistent envelope for uniformity:

// Success response
{
  "status": "success",
  "data": {
    "id": 1,
    "name": "Alice"
  },
  "meta": {
    "page": 1,
    "totalPages": 5,
    "totalItems": 42
  }
}

// Error response
{
  "status": "error",
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "Email is required",
    "details": [
      {"field": "email", "message": "must not be empty"}
    ]
  }
}

Use Arrays for Lists, Objects for Maps

// GOOD: array of items (ordered, easy to iterate)
{
  "users": [
    {"id": 1, "name": "Alice"},
    {"id": 2, "name": "Bob"}
  ]
}

// GOOD: object as a map (key-value lookup)
{
  "settings": {
    "theme": "dark",
    "language": "en",
    "notifications": true
  }
}

Keep Nesting Shallow

Deeply nested JSON is hard to work with. Aim for 3-4 levels maximum. If your JSON goes deeper, consider flattening the structure or referencing related data by ID.

Validate at Boundaries

Always validate JSON at system boundaries — when receiving data from external sources, user input, or third-party APIs. Never trust incoming JSON without validation.

12. Working with Large JSON Files

When JSON files grow to megabytes or gigabytes, standard parsing approaches break down. Here are strategies for handling large JSON efficiently.

The Problem with Large JSON

Standard JSON parsers (like JSON.parse() or json.load()) read the entire file into memory at once. A 1GB JSON file requires at least 1GB of RAM to parse, often more because the in-memory representation is larger than the text.

Streaming Parsers

Streaming parsers process JSON token by token without loading the entire document into memory.

Python (ijson):

import ijson

# Process a huge JSON file one item at a time
with open("huge_dataset.json", "rb") as f:
    for item in ijson.items(f, "records.item"):
        process(item)  # each item is parsed individually

Node.js (JSONStream):

const JSONStream = require("JSONStream");
const fs = require("fs");

fs.createReadStream("huge_dataset.json")
  .pipe(JSONStream.parse("records.*"))
  .on("data", (item) => {
    process(item); // handle each record individually
  });

JSON Lines (JSONL) Format

For very large datasets, consider using JSON Lines format instead of a single JSON array. Each line is a separate, valid JSON object:

{"id": 1, "name": "Alice", "score": 95}
{"id": 2, "name": "Bob", "score": 87}
{"id": 3, "name": "Charlie", "score": 92}

JSON Lines is trivially streamable — just read one line at a time:

# Python - process JSONL line by line
import json

with open("data.jsonl") as f:
    for line in f:
        record = json.loads(line)
        process(record)

Command-Line Tools for Large JSON

The jq command-line tool is invaluable for working with large JSON files without writing code:

# Pretty-print a JSON file
jq '.' data.json

# Extract specific fields
jq '.users[] | {name, email}' data.json

# Filter records
jq '.records[] | select(.age > 30)' data.json

# Count items
jq '.items | length' data.json

# Get unique values
jq '[.records[].country] | unique' data.json

Compression

JSON compresses extremely well because of its repetitive structure. Gzip typically reduces JSON size by 70-90%. Always enable gzip or brotli compression for JSON API responses:

# Check compressed size
gzip -c data.json | wc -c

# Typical results:
# Original:     10 MB
# Gzipped:      1.2 MB (88% reduction)
# Brotli:       0.9 MB (91% reduction)
⚙ Try it: Need to convert a large JSON dataset to CSV for spreadsheet analysis? Our JSON to CSV Converter handles nested objects and arrays with configurable flattening options.

13. JSON Tools and Utilities

Having the right tools makes working with JSON faster and less error-prone. Here is a roundup of essential JSON tools for every developer.

Online JSON Tools

DevToolbox provides a complete suite of free, browser-based JSON tools that work entirely client-side (your data never leaves your browser):

JSON Conversion Tools

Convert JSON to and from other formats:

Command-Line Tools

IDE and Editor Support

Every major editor has excellent JSON support:

Browser Developer Tools

Chrome, Firefox, and Edge all have built-in JSON viewers in their developer tools. When you fetch a JSON endpoint in the Network tab, you get a formatted, expandable tree view of the response.

Conclusion

JSON is a fundamental technology in modern software development. Its simplicity — just six data types and two structures — is its greatest strength. Whether you are building REST APIs, configuring applications, storing data in document databases, or exchanging data between microservices, JSON is almost certainly part of your workflow.

The key takeaways from this guide:

With the fundamentals covered in this guide and the right tools at your disposal, you will be able to work with JSON confidently in any context.

Related Tools and Resources

JSON Formatter
Beautify, minify, and validate JSON
JSON Validator
Check JSON syntax with detailed error messages
JSON Viewer
Interactive tree view with search and copy
JSON Path Finder
Find the exact path to any value
JSON Diff
Compare two JSON documents side by side
JSON to CSV
Convert JSON arrays to CSV for spreadsheets
JSON to YAML
Convert between JSON and YAML formats
JSON Schema Validator
Validate JSON against any schema
XML to JSON Converter
Convert between XML and JSON formats
JSON to Go
Generate Go structs from JSON data
JSON to TypeScript
Generate TypeScript interfaces from JSON
JSON to Dart
Generate Dart classes for Flutter development