Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
Bug report
Bug description:
importjsonjson.loads('{"a":1,}')Traceback (mostrecentcalllast):File"<stdin>",line1,in<module>File"/usr/lib/python3.11/json/__init__.py",line346,inloadsreturn_default_decoder.decode(s)^^^^^^^^^^^^^^^^^^^^^^^^^^File"/usr/lib/python3.11/json/decoder.py",line337,indecodeobj,end=self.raw_decode(s,idx=_w(s,0).end())^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/usr/lib/python3.11/json/decoder.py",line353,inraw_decodeobj,end=self.scan_once(s,idx)^^^^^^^^^^^^^^^^^^^^^^json.decoder.JSONDecodeError:Expectingpropertynameenclosedindoublequotes:line1column8 (char7)
The error is the trailing comma.
Initial pull proposal:#113047 but apparently this needs more attention than I can contribute.
The actual fix needs to be further down, possibly in line 206
Lines 199 to 208 in25061f5
| ifnextchar=='}': | |
| break | |
| elifnextchar!=',': | |
| raiseJSONDecodeError("Expecting ',' delimiter",s,end-1) | |
| end=_w(s,end).end() | |
| nextchar=s[end:end+1] | |
| end+=1 | |
| ifnextchar!='"': | |
| raiseJSONDecodeError( | |
| "Expecting property name enclosed in double quotes",s,end-1) |
we already know that we have seen a comma, and can insert a more helpful error message in line 206.
ifnextchar=='}':raiseJSONDecodeError("No trailing commas allowed in JSON objects.",s,end-1)
at this location, the previous character must have been a comma (line 201). Whitespace has been removed, so this will also catch,\n}
CPython versions tested on:
3.11
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
Projects
Status
Done