Python

【Python】JSON形式のファイル読み込み時にエラーがでた場合の対処方法

【Python】JSON形式のファイル読み込み時にエラーがでた場合の対処方法
スポンサーリンク

こんにちは。さすをです。

以前、6,000万のPython案件に携わりました。

今回の記事は、PythonでJSON形式のファイルを読み込んだ際にエラーがでた時の対処法を紹介していきます。

それでは本文をどうぞ。

困っている女性
困っている女性

PythonでJSONファイルを読み込もうとしたら、エラーが出た。

調べたけど全然わからないし、どうすればいいの、、

さすを
さすを

その悩みを解決します!

この記事を読むとわかること:

JSONファイル読み込み時に発生したエラーの対処方法

筆者の情報:

  • 現役システムエンジニア 兼 副業ブロガー
  • 過去に6,000万のPython案件を受注

※0円のサンプルテキストという近道

独学よりプログラミングスクールの方が効果は出やすいですが、値段が高く、なかなか手を出しづらいですよね。techgymでは無料のサンプルテキストと解説動画をもらえるので、これを使ってお得にPythonの基礎を学ぶのもオススメです。

スポンサーリンク

1.JSON形式のファイル読み込み時によく発生するエラーの対処法6選

1.JSON形式のファイル読み込み時によく発生するエラーの対処法6選

JSON形式のファイル読み込み時によく発生するエラーは以下のようなものがあります。

  • ValueError: Expecting property name: line x column y (char z)
  • json.decoder.JSONDecodeError:Extra data:line 2 column 1(char 1)
  • json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
  • Expecting value:line 1 column 1 (char 0)
  • UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x83 in position 14:illegal multibyte sequence
  • KeyError: ‘age’

1-1.ValueError: Expecting property name: line x column y (char z)

「ValueError: Expecting property name: line x column y (char z)」は、JSONファイルの書式に誤りがあるときに発生するエラーです。

カンマ(,)が余分に入っていないか、中括弧({})の数は正しいかなど、改めて確認しましょう。

1-2.json.decoder.JSONDecodeError:Extra data:line 2 column 1(char 1)

「json.decoder.JSONDecodeError:Extra data:line 2 column 1(char 1)」は、改行で区切られているJSON形式のファイル(JSON Linesファイル)を読み込む際に発生するエラーです。

改行で区切られているJSONの例:

{ "name": "satoshi", "age": 40, "color": "blue", "hobby": "fishing" }
{ "name": "sho", "age": 38, "color": "red", "hobby": "rap" }
{ "name": "jun", "age": 37, "color": "purple", "hobby": "smoothie" }
{ "name": "masaki", "age": 38, "color": "green", "hobby": "animal" }
{ "name": "kazunari", "age": 37, "color": "yellow", "hobby": "game" }

このようなJSONを読み込みたい場合は、pandasライブラリを使用すると簡単に読み込むことができます。

詳しい内容は、【徹底解説】pandasでJSON形式のファイルを読み込む方法で解説しているので、こちらからご覧ください。

1-3.json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

「json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes」は、変数名がダブルクォーテーション(“)で囲まれていないというエラーです。

つまり、変数名をダブルクォーテーション(“)で囲めばエラーは解消されます。

JSONは、JavaScriptなどとは違い、シングルクォーテーション(‘)や変数名のみの記述だとエラーを吐きます。

JSONを扱う時は変数名をダブルクォーテーション(“)で囲むということを覚えておきましょう。

1-4.Expecting value:line 1 column 1 (char 0)

「Expecting value:line 1 column 1 (char 0)」は、JSONの書式に誤りがある場合、XMLやHTML出力(<で始まる文字列)されている場合、互換性のないエンコードがされている場合に発生するエラーです。

JSONの書式に誤りがないか

「<」で始まる文字列はないか

エンコードは互換性があるか

改めて確認しましょう。

1-5.UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x83 in position 14:illegal multibyte sequence

「UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x83 in position 14:illegal multibyte sequence」は、適切なエンコーディングが設定されていない場合に発生するエラーです。

上記のエラー文の場合、JSONファイルに日本語が含まれており、適切なエンコーディングがされていないと考えられます。

ですので、ファイルを読み込むときに、エンコーディングを指定してあげればエラーを解消することができます。

json_file = open('blog_data/sample.json',encoding='utf-8')

JSONファイルに日本語が含まれているときは、特に注意しましょう。

1-6.KeyError: ‘age’

「KeyError: ‘age’」は、存在しないキーを取得しようとしているときに発生するエラーです。

上記のエラー文の場合、ageというキーがないのでエラーが発生しています。

スクリプトの例はこんな感じ。

sample.json:

{
    "color": {
        "satoshi": "brue"
    },
    "hobby": {
        "satoshi": "fishing"
    }
}

pythonスクリプト:

import json

json_file = open('blog_data/sample.json', 'r')

json_dict = json.load(json_file)

get_data = json_dict["age"]

print(get_data)

ageという存在しないキーを取得しようとしているのでエラーが発生します。

KeyErrorが出た場合は、キーが存在するか確認しましょう。

スポンサーリンク

2.一人で学習するのに不安を感じたら

2.一人で学習するのに不安を感じたら

成長している感覚を得られなかったり、エラーばかりで思うように進まない人は、一度プロに教わることをおすすめします。

初期費用は掛かってしまいますが、地図のない状態でひたすら駆け回るよりも、プロという地図を利用したほうが、短い時間で確実に成長することができますし、Pythonスキルを習得したら、初期費用は1か月で回収できます。

本気で人生を変えたい人は検討してみてください。

>>TechAcademy Pythonコースはこちら

3.まとめ

3.まとめ

6,000万のPython案件に携わった経験のある筆者が、PythonでJSON形式のファイルを読み込んだ際にエラーがでた時の対処法を紹介してきました。

JSONの読み込みエラーは種類が限られています。

解決できないエラーが発生したら、何回でもこの記事に戻ってきてください。

この記事が少しでもあなたの役に立てていたらうれしいです。

頑張るあなたを応援しています!

それでは!

>>【レベル別&徹底解説】 Python書籍のおすすめ8選

>>【無料】Pythonでできること9選【初心者でも稼げます】

>>【料金別&徹底解説】 Pythonおすすめ勉強サイト8選【楽しく学ぼう】

>>【徹底解説】Pythonエンジニアに転職する方法【失敗しない方法を詳しく解説】

>>【これだけ知っておけばOKです】 現役エンジニアもよく使う便利なPythonライブラリ22選

コメント

タイトルとURLをコピーしました