Complete Guide to JSON
Master JSON syntax, validation, and best practices
12 min read • Updated January 2025
What is JSON?
JSON (JavaScript Object Notation) is a lightweight, text-based data interchange format that's easy for humans to read and write, and easy for machines to parse and generate. Despite its name, JSON is language-independent and is used across virtually every programming language and platform.
Created by Douglas Crockford in the early 2000s, JSON has become the de facto standard for data exchange on the web. It replaced XML in many applications due to its simplicity, smaller size, and natural compatibility with JavaScript.
Key Characteristics:
- Text-based and human-readable
- Language-independent with parsers available in all major languages
- Lightweight compared to XML (typically 30-50% smaller)
- Built on two universal data structures: objects (key-value pairs) and arrays (ordered lists)
- Specification defined in RFC 8259 and ECMA-404
JSON Syntax Rules
JSON has strict syntax rules that must be followed for valid parsing:
1. Data is in name/value pairs
"name": "John"2. Data is separated by commas
{
"firstName": "John",
"lastName": "Doe",
"age": 30
} Important: No trailing comma after the last item!
3. Curly braces hold objects
{
"user": {
"name": "John",
"age": 30
}
}4. Square brackets hold arrays
{
"users": ["John", "Jane", "Bob"]
}5. Strings must use double quotes
// Correct
"name": "John"
// WRONG - single quotes not allowed
'name': 'John'6. Property names must be quoted
// Correct
"age": 30
// WRONG - unquoted property names not allowed
age: 30JSON Data Types
JSON supports six data types:
String
Text enclosed in double quotes. Must escape special characters with backslash.
"name": "John Doe"
"message": "Hello, \"world\"!"
"path": "C:\\Users\\Documents"Number
Integer or floating-point. No distinction between types.
"age": 30
"price": 19.99
"temperature": -5.5
"scientific": 1.5e10Boolean
True or false (lowercase only).
"isActive": true
"hasAccount": falseNull
Represents absence of value (lowercase only).
"middleName": null
"deletedAt": nullObject
Unordered collection of key-value pairs enclosed in curly braces.
"address": {
"street": "123 Main St",
"city": "New York",
"zipCode": "10001"
}Array
Ordered list of values enclosed in square brackets. Values can be any type.
"tags": ["javascript", "json", "web"]
"scores": [95, 87, 92]
"mixed": ["text", 123, true, null]Validating JSON
JSON validation ensures your data conforms to the JSON specification. Invalid JSON will cause parsing errors in applications.
💡 Use Our Tool
Try our JSON Formatter & Validator to validate your JSON instantly.
Validation checks for:
- Proper use of quotes (double quotes only)
- Balanced brackets and braces
- No trailing commas
- Properly escaped special characters
- Valid data types
- Correct comma placement between elements
JavaScript Validation Example:
try {
const data = JSON.parse(jsonString);
console.log("Valid JSON!", data);
} catch (error) {
console.error("Invalid JSON:", error.message);
}Common JSON Errors
Understanding common mistakes helps you write valid JSON quickly:
❌ Trailing Commas
{
"name": "John",
"age": 30, // ← WRONG: comma after last item
}❌ Single Quotes
{
'name': 'John' // ← WRONG: must use double quotes
}❌ Unquoted Keys
{
name: "John" // ← WRONG: keys must be quoted
}❌ Comments
{
"name": "John", // This is a comment ← WRONG: no comments allowed
"age": 30
}❌ Undefined Value
{
"value": undefined // ← WRONG: use null instead
}Parsing JSON in JavaScript
JavaScript provides native methods for working with JSON:
JSON.parse() - Convert JSON string to JavaScript object
const jsonString = '{"name":"John","age":30}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // "John"
console.log(obj.age); // 30JSON.stringify() - Convert JavaScript object to JSON string
const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"John","age":30}'
// With formatting (indentation)
const formatted = JSON.stringify(obj, null, 2);Error Handling
function safeJSONParse(jsonString) {
try {
return { success: true, data: JSON.parse(jsonString) };
} catch (error) {
return { success: false, error: error.message };
}
}Best Practices
- ✓ Use consistent indentation - 2 or 4 spaces for readability
- ✓ Validate before deployment - Use validators to catch errors early
- ✓ Keep nesting shallow - Deeply nested structures are hard to read and maintain
- ✓ Use meaningful key names - Descriptive names improve clarity
- ✓ Minify for production - Remove whitespace to reduce file size
- ✓ Consider schema validation - Use JSON Schema for complex data structures
- ✓ Handle parsing errors gracefully - Always use try-catch when parsing
Real-World Use Cases
1. RESTful APIs
JSON is the standard format for API requests and responses. Almost every modern web API uses JSON for data exchange.
2. Configuration Files
package.json, tsconfig.json, .eslintrc.json - many tools use JSON for configuration due to its simplicity and wide support.
3. Data Storage
NoSQL databases like MongoDB store data in JSON-like formats (BSON). JSON is perfect for document-oriented databases.
4. Web Storage
LocalStorage and SessionStorage APIs work with strings - JSON is perfect for storing complex objects in the browser.
5. Data Exchange
JSON is the universal format for importing/exporting data between applications, perfect for data migration and integration.
Related Tools
Ready to Practice?
Try our JSON tools to put your knowledge into practice