Advanced JSON Syntax Reference

JSON (JavaScript Object Notation) is a lightweight data interchange format that's easy for humans to read and write, and easy for machines to parse and generate. Below is a comprehensive guide to JSON syntax.

1. Basic Syntax

JSON Structure

  • Objects: Key/value pairs enclosed in curly braces `{}`.
  • Arrays: Ordered list of values enclosed in square brackets `[]`.
  • Values: Can be a string, number, object, array, true, false, or null.
  • Whitespace: Insignificant and can be used for readability.

Example

{
    "name": "John Doe",
    "age": 30,
    "isStudent": false,
    "address": {
        "street": "123 Main St",
        "city": "Anytown"
    },
    "courses": ["Math", "Science"],
    "scores": {
        "Math": 90,
        "Science": 95
    },
    "spouse": null
}

2. Objects

Syntax

Example

{
    "key1": "value1",
    "key2": "value2",
    "nestedObject": {
        "nestedKey": "nestedValue"
    }
}

3. Arrays

Syntax

  • Enclosed in square brackets `[]`.
  • Contains zero or more values.
  • Values are separated by commas `,`.

Example

[
    "value1",
    "value2",
    {
        "key": "value"
    },
    [1, 2, 3]
]

4. Values

Types

  • String: Enclosed in double quotes `" "`.
  • Number: Integer or floating-point.
  • Object: As defined above.
  • Array: As defined above.
  • Boolean: `true` or `false`.
  • Null: `null`.

String Example

{
    "greeting": "Hello, World!"
}

Number Example

{
    "integer": 42,
    "float": 3.14159
}

Boolean Example

{
    "isTrue": true,
    "isFalse": false
}

Null Example

{
    "nothing": null
}

5. Strings

Syntax

  • Enclosed in double quotes `" "`.
  • Can contain Unicode characters and escape sequences.

Escape Sequences

  • `\"` - Double quote
  • `\\` - Backslash
  • `\/` - Slash
  • `\b` - Backspace
  • `\f` - Form feed
  • `\n` - Newline
  • `\r` - Carriage return
  • `\t` - Tab
  • `\uXXXX` - Unicode character

Example

{
    "text": "This is a string with a newline\nand a tab\tcharacter."
}

6. Numbers

Syntax

  • Can be integer or floating-point.
  • No quotes around numbers.
  • Can include a negative sign `-`.
  • Can use scientific notation `e` or `E`.

Example

{
    "integer": 100,
    "negativeInteger": -100,
    "float": 3.14,
    "negativeFloat": -3.14,
    "scientific": 1.23e10
}

7. Nested Structures

Objects within Objects

{
    "outerObject": {
        "innerObject": {
            "key": "value"
        }
    }
}

Arrays within Arrays

[
    [1, 2, 3],
    [4, 5, 6]
]

Mixed Nested Structures

{
    "objectWithArray": {
        "array": [1, 2, 3]
    },
    "arrayWithObjects": [
        {"key1": "value1"},
        {"key2": "value2"}
    ]
}

8. Comments

JSON does not support comments. Avoid adding comments within JSON files.

9. Special Characters and Unicode

Special Characters

  • Use escape sequences for special characters as mentioned above.

Unicode Characters

  • Represent Unicode characters with `\u` followed by a 4-hexadecimal digit code.

Example

{
    "emoji": "\uD83D\uDE00", // 😀
    "currency": "\u0024" // $
}

10. Best Practices

  • Consistency: Maintain consistent use of spaces and indentation.
  • Readability: Use whitespace to improve readability.
  • Key Naming: Use meaningful and consistent key names.
  • Avoid Trailing Commas: Ensure no trailing commas in objects or arrays to maintain compatibility.

Example

{
    "user": {
        "id": 1,
        "name": "Alice",
        "email": "alice@example.com"
    },
    "active": true,
    "roles": ["admin", "user"]
}

11. Common Mistakes

Missing Quotes around Keys

Incorrect:

{
    name: "John Doe"
}

Correct:

{
    "name": "John Doe"
}

Trailing Commas

Incorrect:

{
    "name": "John Doe",
}

Correct:

{
    "name": "John Doe"
}

Single Quotes for Strings

Incorrect:

{
    'name': 'John Doe'
}

Correct:

{
    "name": "John Doe"
}

12. Validating JSON

Online Validators

- Use online tools like JSONLint to validate and format JSON.

JSON Schemas

  • Define JSON structures using JSON Schema to validate data against a predefined format.

Example Schema

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Person",
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "age": {
            "type": "integer",
            "minimum": 0
        },
        "email": {
            "type": "string",
            "format": "email"
        }
    },
    "required": ["name", "age"]
}

By following this reference, you can effectively create, read, and validate JSON data, ensuring it adheres to proper syntax and best practices.

www.json.org