{
  "product": "Specification (reference)",
  "title": "JSON Parser",
  "summary": "Parse and serialise JSON per RFC 8259, with useful errors.",
  "category": "engines",
  "entries": [
    {
      "path": [
        "AI",
        "Parse",
        "Objects, arrays, strings, numbers, booleans, null"
      ],
      "value": "",
      "status": "yes",
      "note": "the whole grammar"
    },
    {
      "path": [
        "AI",
        "Parse",
        "String escapes including \\u surrogate pairs"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Parse",
        "Numbers with exponent and fraction"
      ],
      "value": "",
      "status": "yes",
      "note": "no leading zeros, no hex"
    },
    {
      "path": [
        "AI",
        "Parse",
        "Reject trailing commas and comments"
      ],
      "value": "",
      "status": "yes",
      "note": "unless a relaxed mode is opted into"
    },
    {
      "path": [
        "AI",
        "Parse",
        "Reject duplicate-key ambiguity explicitly"
      ],
      "value": "",
      "status": "yes",
      "note": "documented behaviour either way"
    },
    {
      "path": [
        "AI",
        "Parse",
        "Nesting depth limit"
      ],
      "value": "",
      "status": "yes",
      "note": "guards against stack exhaustion"
    },
    {
      "path": [
        "AI",
        "Errors",
        "Message names the byte offset, line and column"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Errors",
        "Errors say what was expected"
      ],
      "value": "",
      "status": "yes",
      "note": "not just \"unexpected token\""
    },
    {
      "path": [
        "AI",
        "Serialise",
        "Round-trip parse and stringify"
      ],
      "value": "",
      "status": "yes",
      "note": "value equality preserved"
    },
    {
      "path": [
        "AI",
        "Serialise",
        "Pretty-print with configurable indent"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Serialise",
        "Stable key ordering option"
      ],
      "value": "",
      "status": "yes",
      "note": "for reproducible output"
    },
    {
      "path": [
        "AI",
        "Serialise",
        "Escape control characters and optionally non-ASCII"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Streaming",
        "Incremental parse of large documents"
      ],
      "value": "",
      "status": "yes",
      "note": "without holding the whole text"
    },
    {
      "path": [
        "AI",
        "Streaming",
        "Event or token stream API"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Correctness",
        "Passes the JSONTestSuite corpus"
      ],
      "value": "",
      "status": "yes",
      "note": "y_/n_/i_ cases classified"
    }
  ]
}
