関数が受けた文字列や読みだしたファイルがJsonフォーマットであるか判定したい場合。
例外はjson.JSONDecodeErrorで捕まえられます。
ValueErrorでもキャッチできますがほかの例外もまとめられてしまうので基本的にはjson.JSONDecodeErrorで例外処理を行いましょう。
json_exception
def isJsonFormat(line):
try:
json.loads(line)
except json.JSONDecodeError as e:
print(sys.exc_info())
print(e)
return False
# 以下の例外でも捕まえるので注意
except ValueError as e:
print(sys.exc_info())
print(e)
return False
except Exception as e:
print(sys.exc_info())
print(e)
return False
return True
print(sys.exc_info())の出力
<class 'json.decoder.JSONDecodeError'>
JSONDecodeError('Extra data: line 1 column 5 (char 4)',)
<traceback object at 0x000002228CEAF1C8>
print(e)の出力
Extra data: line 1 column 5 (char 4)