🛠️DevTools

How to Validate JSON

JSON validation ensures your data is syntactically correct before processing. Use our [JSON Validator](/tools/json-tools/json-validator) to check your JSON instantly. This guide covers common JSON errors and how to validate JSON in code. For JSON basics, see our [JSON Guide](/guides/json). Need to beautify your JSON? Try our [JSON Formatter](/tools/json-tools/json-formatter).

Try JSON Validator Tool →

Common JSON Syntax Errors

Here are the most common JSON errors and how to fix them:

1. Trailing Commas

json
1// ❌ Invalid
2{"name": "John", "age": 30,}
3
4// ✅ Valid
5{"name": "John", "age": 30}

2. Single Quotes

json
1// ❌ Invalid
2{'name': 'John'}
3
4// ✅ Valid
5{"name": "John"}

3. Unquoted Keys

json
1// ❌ Invalid
2{name: "John"}
3
4// ✅ Valid
5{"name": "John"}

4. Comments

json
1// ❌ Invalid - JSON doesn't support comments
2{
3 "name": "John" // This breaks
4}
5
6// ✅ Valid - Use a field for notes
7{
8 "_comment": "User data",
9 "name": "John"
10}

5. Unescaped Special Characters

json
1// ❌ Invalid
2{"path": "C:\Users\John"}
3
4// ✅ Valid
5{"path": "C:\\Users\\John"}

Validate JSON in JavaScript

Use try-catch with JSON.parse() to validate JSON:

javascript
// Basic validation
function isValidJson(str) {
  try {
    JSON.parse(str);
    return true;
  } catch (e) {
    return false;
  }
}

// Validation with error details
function validateJson(str) {
  try {
    const parsed = JSON.parse(str);
    return { valid: true, data: parsed };
  } catch (e) {
    return { 
      valid: false, 
      error: e.message,
      // Extract position from error message
      position: e.message.match(/position (\d+)/)?.[1]
    };
  }
}

// Usage
const result = validateJson('{"name": "John",}');
if (!result.valid) {
  console.error('Invalid JSON:', result.error);
  // "Invalid JSON: Unexpected token } in JSON at position 16"
}

// Validate and format in one step
function validateAndFormat(str) {
  const parsed = JSON.parse(str); // Throws if invalid
  return JSON.stringify(parsed, null, 2);
}

Validate JSON in Python

Python's json module raises JSONDecodeError for invalid JSON:

python
import json

def is_valid_json(s):
    try:
        json.loads(s)
        return True
    except json.JSONDecodeError:
        return False

def validate_json(s):
    try:
        data = json.loads(s)
        return {"valid": True, "data": data}
    except json.JSONDecodeError as e:
        return {
            "valid": False,
            "error": str(e),
            "line": e.lineno,
            "column": e.colno,
            "position": e.pos
        }

# Usage
result = validate_json('{"name": "John",}')
if not result["valid"]:
    print(f"Error at line {result['line']}, column {result['column']}")
    print(f"Message: {result['error']}")

# Validate JSON file
def validate_json_file(filepath):
    try:
        with open(filepath, 'r') as f:
            json.load(f)
        return True
    except (json.JSONDecodeError, FileNotFoundError) as e:
        print(f"Error: {e}")
        return False

Validate JSON in Java

Use Jackson or Gson to validate JSON in Java:

java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;

public class JsonValidator {
    private static final ObjectMapper mapper = new ObjectMapper();
    
    public static boolean isValidJson(String json) {
        try {
            mapper.readTree(json);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    
    public static ValidationResult validateJson(String json) {
        try {
            JsonNode node = mapper.readTree(json);
            return new ValidationResult(true, node, null);
        } catch (Exception e) {
            return new ValidationResult(false, null, e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        String json = "{\"name\": \"John\",}"; // Invalid - trailing comma
        
        ValidationResult result = validateJson(json);
        if (!result.isValid()) {
            System.out.println("Invalid JSON: " + result.getError());
        }
    }
}

JSON Schema Validation

For complex validation beyond syntax, use JSON Schema:

javascript
// Using Ajv (npm install ajv)
const Ajv = require('ajv');
const ajv = new Ajv();

// Define a schema
const schema = {
  type: "object",
  properties: {
    name: { type: "string", minLength: 1 },
    age: { type: "integer", minimum: 0 },
    email: { type: "string", format: "email" }
  },
  required: ["name", "email"],
  additionalProperties: false
};

// Compile and validate
const validate = ajv.compile(schema);

const data = { name: "John", age: 30, email: "john@example.com" };
const valid = validate(data);

if (!valid) {
  console.log("Validation errors:", validate.errors);
}

// Python equivalent using jsonschema
// pip install jsonschema
/*
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer", "minimum": 0}
    },
    "required": ["name"]
}

try:
    validate(instance={"name": "John", "age": 30}, schema=schema)
except ValidationError as e:
    print(f"Validation error: {e.message}")
*/

Frequently Asked Questions

Why is my JSON invalid?

The most common causes are: trailing commas, single quotes instead of double quotes, unquoted keys, comments, and unescaped special characters in strings.

How do I find the error position in JSON?

Most parsers report the character position or line/column number where parsing failed. Our JSON Validator tool highlights the exact error location.

What's the difference between syntax and schema validation?

Syntax validation checks if JSON is well-formed. Schema validation checks if the data matches expected types, required fields, and constraints.

Can I validate JSON against a TypeScript interface?

Not directly at runtime. Use libraries like Zod, io-ts, or generate JSON Schema from TypeScript types.

Try the JSON Validator Tool

Now that you understand how it works, try encoding and decoding with our free online tool.

Open JSON Validator →

Last updated: 2026-03-15