Python 3.5+Исключенияисключение
json.JSONDecodeError
модульные исключения
Некорректный JSON при разборе: json.loads('{bad'). Несёт позицию ошибки (pos/lineno/colno).
Синтаксис
raise json.JSONDecodeError
Чаще всего разбираемая строка вообще не JSON: пустой ответ сервера, HTML-страница ошибки или питоновский repr словаря с одинарными кавычками — JSON требует двойные и запрещает висячую запятую. В обработчике полезны атрибуты pos, lineno, colno и doc: они показывают точное место обрыва, а не просто факт неудачи. Это подкласс ValueError, так что except ValueError ловит его заодно; ловить нужно только этот класс, если хотите отличить битый JSON от прочих ошибок.
Примеры
import json
try:
json.loads('{bad')
except json.JSONDecodeError as e:
print(type(e).__name__) # → JSONDecodeError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности