[解決済み] "No JSON object could be decoded "よりも良いエラーメッセージを表示する。
2022-02-14 13:44:04
質問
ある長い複雑なJSONファイルからデータをロードするPythonコード。
with open(filename, "r") as f:
data = json.loads(f.read())
(注)最適なコードバージョンは、こうあるべき。
with open(filename, "r") as f:
data = json.load(f)
が、どちらも似たような挙動を示します)
多くの種類のJSONエラー(区切り文字がない、文字列のバックスラッシュが正しくないなど)に対して、JSONエラーが見つかった行番号と列番号を含む親切なメッセージを表示します。
しかし、他のタイプのJSONエラー(古典的な "リストの最後のアイテムでカンマを使う" だけでなく、true/false を大文字にするなど他のものも含む)については、Pythonの出力は単なるものです。
Traceback (most recent call last):
File "myfile.py", line 8, in myfunction
config = json.loads(f.read())
File "c:\python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "c:\python27\lib\json\decoder.py", line 360, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
このタイプのValueErrorの場合、JSONファイルのどこにエラーがあるかをPythonに教えてもらうにはどうすればいいでしょうか。
解決方法は?
私は
simplejson
モジュールは、多くの場合、組み込みの
json
モジュールは曖昧です。例えば、リストの最後の項目の後にカンマがあるような場合です。
json.loads('[1,2,]')
....
ValueError: No JSON object could be decoded
というのは、あまり説明的ではありません。と同じ操作で
simplejson
:
simplejson.loads('[1,2,]')
...
simplejson.decoder.JSONDecodeError: Expecting object: line 1 column 5 (char 5)
ずっといい! 同様に、大文字と小文字を区別するような他のよくある誤りについても
True
.
関連
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
python implement mysql add delete check change サンプルコード
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] JSON文字列を安全にオブジェクトに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac