The errors that account for most failures
Trailing commas after the last element. Legal in JavaScript, illegal in JSON, and the single most common cause of parse failure.
Single quotes instead of double quotes, and unquoted keys. Both are JavaScript object syntax, not JSON.
Comments. JSON has none. Configuration files that appear to contain comments are using a superset such as JSON5 or JSONC.
Unescaped characters inside strings, particularly backslashes in Windows paths and raw newlines.
Reading a parse error
Parsers report the position where parsing became impossible, which is usually just after the real mistake. Look at the preceding token, not the reported one.
Formatting the document first makes structural errors visible: a missing closing brace shows up immediately as wrong indentation depth.
Conventions worth adopting
Pick one key naming style and keep it across the whole API. Mixed camelCase and snake_case in the same payload causes bugs at every consumer.
Use ISO 8601 strings for dates and times, with timezone offsets included.
Represent money as integer minor units or as a string, never as a floating point number.
Prefer null over omitting a key when a value is genuinely absent, so consumers can distinguish absent from unset.
Validation beyond syntax
Valid JSON can still be wrong data. A schema check confirms required fields, types and allowed values.
Validate at the boundary where data enters your system, and reject with a specific message about which field failed.