JSON (JavaScript Object Notation) is the most widely used data format on the web. Every API you've ever used, every configuration file you've read, every database query result you've seen — chances are JSON was involved. This guide explains everything from basic syntax to advanced patterns.
What JSON Is (and Isn't)
JSON is a lightweight text-based data interchange format. Despite its name, JSON is language-independent — it's used in Python, Java, Go, Ruby, PHP, and virtually every programming language, not just JavaScript.
JSON was derived from JavaScript object literal syntax, which is why it looks familiar to JavaScript developers. But JSON is stricter than JavaScript: keys must be double-quoted, trailing commas are forbidden, and comments aren't allowed.
JSON Syntax Rules
JSON has only two structural types:
Objects (Key-Value Pairs)
Objects are wrapped in curly braces. Keys must be strings (double-quoted). Values can be any JSON type:
{
"name": "ToolboxHub",
"tools": 500,
"free": true,
"url": "https://toolboxhub.net"
}
Arrays (Ordered Lists)
Arrays are wrapped in square brackets and contain comma-separated values:
["text", "developer", "math", "converter"]
The Six Value Types
- String:
"hello"— double quotes only, supports escape sequences (\n,\t,\u0041) - Number:
42,3.14,-1,2.5e10— no leading zeros, no hex, no NaN/Infinity - Boolean:
trueorfalse— lowercase only - Null:
null— lowercase only - Object:
{}— nested key-value pairs - Array:
[]— nested ordered lists
That's it. No dates, no functions, no undefined, no comments. JSON's simplicity is its greatest strength.
Common JSON Mistakes
Trailing Commas
JavaScript allows trailing commas. JSON does not:
// INVALID JSON
{ "name": "test", "value": 42, }
// VALID JSON
{ "name": "test", "value": 42 }
Single Quotes
JSON requires double quotes for strings and keys. Single quotes are invalid:
// INVALID
{ 'name': 'test' }
// VALID
{ "name": "test" }
Unquoted Keys
JavaScript allows unquoted keys. JSON does not:
// INVALID
{ name: "test" }
// VALID
{ "name": "test" }
Comments
JSON has no comment syntax. Neither // nor /* */ is valid. If you need comments in configuration files, consider JSONC (JSON with Comments, supported by VS Code) or YAML.
JSON vs Other Formats
JSON vs XML
XML was the dominant data format before JSON. JSON won because it's less verbose — the same data takes roughly half the bytes in JSON vs XML. JSON is also easier to parse in JavaScript (one function call vs DOM traversal). XML still has strengths: namespaces, schemas, and mixed content (text with embedded markup).
Need to convert between them? Use our XML to JSON Converter.
JSON vs YAML
YAML is a superset of JSON that adds features: comments, multiline strings, anchors, and a less punctuation-heavy syntax. YAML is popular for configuration files (Docker Compose, Kubernetes, GitHub Actions). For APIs and data interchange, JSON remains standard.
Convert between them with our YAML to JSON Converter.
JSON vs CSV
CSV is simpler and more compact for tabular data. JSON handles nested and hierarchical data that CSV cannot represent. Use our CSV to JSON Converter when you need to transform spreadsheet data into a structured format.
Working with JSON in Practice
Pretty-Printing
Minified JSON (no whitespace) is efficient for transmission but unreadable. Pretty-printed JSON (with indentation) is essential for debugging and reviewing data. Our JSON Formatter instantly pretty-prints, validates, and highlights syntax errors.
Generating TypeScript Types from JSON
When working with APIs, you often receive JSON responses and need to create TypeScript interfaces. Instead of writing them manually, paste a JSON sample into our JSON to TypeScript converter to generate accurate type definitions.
JSON Best Practices
- Use consistent naming conventions:
camelCaseis most common in JavaScript ecosystems,snake_casein Python/Ruby ecosystems - Avoid deeply nested structures: More than 3-4 levels of nesting makes data hard to work with. Flatten where possible
- Use arrays for ordered collections, objects for named properties: Don't use objects with numeric keys as a poor substitute for arrays
- Include null for missing values, not empty strings:
"email": nullis clearer than"email": "" - Represent dates as ISO 8601 strings:
"2026-03-28T12:00:00Z"is unambiguous and sortable - Validate JSON before using it: A single syntax error makes the entire document invalid. Always validate
Start Working with JSON
Format, validate, and convert JSON instantly with our free JSON Formatter. Need to convert data? Try the CSV to JSON, XML to JSON, or YAML to JSON converters.