Issue #5067: improve some json error messages.
Patch by Serhiy Storchaka.
This commit is contained in:
commit
802d669044
|
@ -99,7 +99,7 @@ Using json.tool from the shell to validate and pretty-print::
|
|||
"json": "obj"
|
||||
}
|
||||
$ echo '{1.2:3.4}' | python -mjson.tool
|
||||
Expecting property name: line 1 column 1 (char 1)
|
||||
Expecting property name enclosed in double quotes: line 1 column 1 (char 1)
|
||||
|
||||
.. highlight:: python3
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ Using json.tool from the shell to validate and pretty-print::
|
|||
"json": "obj"
|
||||
}
|
||||
$ echo '{ 1.2:3.4}' | python -m json.tool
|
||||
Expecting property name: line 1 column 2 (char 2)
|
||||
Expecting property name enclosed in double quotes: line 1 column 2 (char 2)
|
||||
"""
|
||||
__version__ = '2.0.9'
|
||||
__all__ = [
|
||||
|
|
|
@ -172,7 +172,8 @@ def JSONObject(s_and_end, strict, scan_once, object_hook, object_pairs_hook,
|
|||
pairs = object_hook(pairs)
|
||||
return pairs, end + 1
|
||||
elif nextchar != '"':
|
||||
raise ValueError(errmsg("Expecting property name", s, end))
|
||||
raise ValueError(errmsg(
|
||||
"Expecting property name enclosed in double quotes", s, end))
|
||||
end += 1
|
||||
while True:
|
||||
key, end = scanstring(s, end, strict)
|
||||
|
@ -182,7 +183,7 @@ def JSONObject(s_and_end, strict, scan_once, object_hook, object_pairs_hook,
|
|||
if s[end:end + 1] != ':':
|
||||
end = _w(s, end).end()
|
||||
if s[end:end + 1] != ':':
|
||||
raise ValueError(errmsg("Expecting : delimiter", s, end))
|
||||
raise ValueError(errmsg("Expecting ':' delimiter", s, end))
|
||||
end += 1
|
||||
|
||||
try:
|
||||
|
@ -210,12 +211,13 @@ def JSONObject(s_and_end, strict, scan_once, object_hook, object_pairs_hook,
|
|||
if nextchar == '}':
|
||||
break
|
||||
elif nextchar != ',':
|
||||
raise ValueError(errmsg("Expecting , delimiter", s, end - 1))
|
||||
raise ValueError(errmsg("Expecting ',' delimiter", s, end - 1))
|
||||
end = _w(s, end).end()
|
||||
nextchar = s[end:end + 1]
|
||||
end += 1
|
||||
if nextchar != '"':
|
||||
raise ValueError(errmsg("Expecting property name", s, end - 1))
|
||||
raise ValueError(errmsg(
|
||||
"Expecting property name enclosed in double quotes", s, end - 1))
|
||||
if object_pairs_hook is not None:
|
||||
result = object_pairs_hook(pairs)
|
||||
return result, end
|
||||
|
@ -249,7 +251,7 @@ def JSONArray(s_and_end, scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
|
|||
if nextchar == ']':
|
||||
break
|
||||
elif nextchar != ',':
|
||||
raise ValueError(errmsg("Expecting , delimiter", s, end))
|
||||
raise ValueError(errmsg("Expecting ',' delimiter", s, end))
|
||||
try:
|
||||
if s[end] in _ws:
|
||||
end += 1
|
||||
|
|
|
@ -7,7 +7,7 @@ Usage::
|
|||
"json": "obj"
|
||||
}
|
||||
$ echo '{ 1.2:3.4}' | python -m json.tool
|
||||
Expecting property name: line 1 column 2 (char 2)
|
||||
Expecting property name enclosed in double quotes: line 1 column 2 (char 2)
|
||||
|
||||
"""
|
||||
import sys
|
||||
|
|
|
@ -646,7 +646,7 @@ _parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ss
|
|||
|
||||
/* read key */
|
||||
if (PyUnicode_READ(kind, str, idx) != '"') {
|
||||
raise_errmsg("Expecting property name", pystr, idx);
|
||||
raise_errmsg("Expecting property name enclosed in double quotes", pystr, idx);
|
||||
goto bail;
|
||||
}
|
||||
key = scanstring_unicode(pystr, idx + 1, strict, &next_idx);
|
||||
|
@ -667,7 +667,7 @@ _parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ss
|
|||
/* skip whitespace between key and : delimiter, read :, skip whitespace */
|
||||
while (idx <= end_idx && IS_WHITESPACE(PyUnicode_READ(kind, str, idx))) idx++;
|
||||
if (idx > end_idx || PyUnicode_READ(kind, str, idx) != ':') {
|
||||
raise_errmsg("Expecting : delimiter", pystr, idx);
|
||||
raise_errmsg("Expecting ':' delimiter", pystr, idx);
|
||||
goto bail;
|
||||
}
|
||||
idx++;
|
||||
|
@ -707,7 +707,7 @@ _parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ss
|
|||
break;
|
||||
}
|
||||
else if (PyUnicode_READ(kind, str, idx) != ',') {
|
||||
raise_errmsg("Expecting , delimiter", pystr, idx);
|
||||
raise_errmsg("Expecting ',' delimiter", pystr, idx);
|
||||
goto bail;
|
||||
}
|
||||
idx++;
|
||||
|
@ -797,7 +797,7 @@ _parse_array_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssi
|
|||
break;
|
||||
}
|
||||
else if (PyUnicode_READ(kind, str, idx) != ',') {
|
||||
raise_errmsg("Expecting , delimiter", pystr, idx);
|
||||
raise_errmsg("Expecting ',' delimiter", pystr, idx);
|
||||
goto bail;
|
||||
}
|
||||
idx++;
|
||||
|
|
Loading…
Reference in New Issue