Strict JSON, and the four mistakes that cause almost every error
JSON has one set of rules and no extensions. Every string is double-quoted, every key is a string, there are no comments, no trailing commas, and no NaN, Infinity or undefined - those are JavaScript values, and the format has no way to write them. A JavaScript object literal that happens to look like JSON is usually not JSON: that is the single most common reason a config file will not parse.
So when the text is refused, this page names the mistake rather than only reporting it. A comma before a closing bracket gets "JSON does not allow a comma after the last item"; a single-quoted string gets "JSON strings use double quotes"; a bare key gets "JSON object keys must be strings"; and a `//` or `/* */` comment is called out as a comment. Those four, plus a missing value after a colon, account for almost every broken document anybody has ever pasted.
One thing strict JSON does *not* complain about is a duplicate key inside the same object. The last one wins and the earlier ones are silently gone - by the time anything can count them they are already gone from the parsed value. That is the format, and it catches people out because it fails quietly rather than loudly.