実務に生かすPythonサンプル

【保存版】PythonでJSONデータのパース・読み込み【サンプルとよくある疑問】

こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。

今回は、PythonでJSONデータをパース・読み込みしたい人の疑問に答えます。

PythonでJSONデータをパースしたい。必要なデータをPythonの変数に読み込んで次の処理に使いたい。

JSONデータは、ファイルの時とAPIレスポンスの時で何か扱い方は違うの?

この記事では、エンジニアの実務・大学の研究・趣味で、合わせて5年以上Pythonを使ってきた経験を生かして、Pythonで標準モジュールjsonを使ってJSONデータをパース・読み込みする方法を紹介します。

この記事はこんな方におすすめ!

  • PythonでJSONデータをパース・読み込みしたい方
  • 実際にjsonモジュールを使ってみて出てきた疑問を解消したい方

 

Python標準ライブラリjsonでJSONデータをパースする基本操作

標準ライブラリjsonでJSONデータをパースする基本操作を、実際のサンプルコードとあわせて紹介します。

jsonライブラリをインポートした前提で読み進めてください。基本的にはGoogle Colaboratory上で実行して確認しており、コマンド実行時の「!」は除いています。

 

json.loads():JSON文字列を辞書に変換

引数として与えた str を、Pythonのオブジェクトに変換(デコード)します。

Python3.6からはbytes, bytearrayも引数に与えられるようになりました。

s2_2を見ると分かりやすいですが、「\”」の部分が「”」に、「\b」の部分が「\x08」に対応しています。

略語由来語句意味8進数コードエスケープコード
BSBack Space1文字後退\x08\b

参考:ASCIIコードの秘密

 

以下のように、int型やbool型のPythonオブジェクトとしてデコードすることもできます。

 

json.load():JSONファイルを辞書として読み込む

引数にファイルオブジェクトを与えて、JSONファイルから辞書を作成できます。

 

手元にファイルがなく、簡単に試したい時には、StringIOを使ってメモリ上でファイルのように扱えるストリームを用意できます。

 

StringIOオブジェクト活用の一例として、「Pythonの単体テストで簡単なテキストファイルが必要な時に、実際にファイルを用意することなくテストを実行できる」ことが挙げられます。手軽に使えて便利です。

 

Python標準ライブラリjsonに関するFAQ

標準ライブラリjsonを実際に使うにあたって、気になる疑問点をまとめました。

①:Web APIでJSONデータを扱うには?パース・読み込みに差はない

JSONデータ自体の扱い方は、ファイルであってもAPIのレスポンスであっても大きく違いはありません

以下の例では、requestsライブラリを使ってWeb APIから簡単にデータを取得しています。

 

WP REST APIはWordPress4.7以降に含まれている公式のAPIではありますが、上記の例のようにWordPressサイトに関する様々なデータをオンラインで取得することができます。

セキュリティ上不安な方は、ログインしていないユーザからのアクセスを制限することも検討してください(プラグインもあるようです)。

 

②:順序を保ったまま読み込むには?object_pairs_hookにOrderedDictを指定

入力JSON文字列中でのオブジェクト順序を保ったまま読み込むために、object_pairs_hook引数にOrderedDictを指定できます。

Python3.7以前では、通常のdict型では順序が保たれる保証がないので、必ずJSON文字列で指定した順番を保持したい場合には有効な方法です。

 

③:ワンライナーでJSONデータを整形するには?json.toolかjqが便利

「python -m json.tool」(Python2.6以降)または「jq」を使ってJSONデータを整形することができます。

 

④:重複した名前のレコードは?デフォルトでは最後のレコード以外は無視される

JSONオブジェクト中の名前はユニークである必要があります。

ですが、万が一重複した名前を含むJSON文字列をloads()でデコードすると、デフォルトでは最後のレコード以外は無視されます。

 

 

PythonのjsonモジュールでJSONデータのパース・読み込みをして、快適なエンジニア生活を送りましょう。

Pythonでリストを検索する方法【実務で使える実例も紹介します】Pythonでリストを検索する方法。「要素がリストに含まれているかどうか調べる」→in演算子、「要素の位置(何番目)を検索」→indexメソッド、「要素の個数を検索」→countメソッドを使った方法を説明します。実務で使える実例も紹介するので、明日から実務で活躍できるエンジニアを目指しましょう。...

より本格的にPythonを学ぶなら

より本格的にPythonを学びたい場合には、プログラミングスクールを活用するのがオススメです。

プログラミングスクールって、「プログラミングって何?」みたいな超初心者だけのものと思っていませんか?

最近では、経験者向けにも、レベルや希望に合わせた様々なコースが展開されています。

オススメなのが、Aidemyです。

特徴は、人工知能特化型のプログラミング学習サービスということ。

Pythonを学べるコース

  • AIアプリ開発コース(画像認識)
  • データ分析コース(数値予測)
  • 自然言語処理コース
  • E資格対策コース
  • クラウドAI開発コース
  • 実戦データサイエンスコース

Aidemyの教材は「理論よりもまずは実践」をうたっていて、他社と比較すると、かなり本格的に、現場でも実際に使われるスキルを身につけられます。

そして、どのコースも同じ料金で受け放題

余裕があれば、AIアプリ開発コースの内容と、クラウドAI開発コースの内容を組み合わせて学習することもできてしまいます。

無料のカウンセリングで、不明点や学習したい内容をまずは相談してみましょう。

» Aidemyの無料カウンセリングはこちら

 

もう一つオススメなのが、TechAcademyです。

オンラインプログラミングスクール受講者数No.1の実績に加えて、受講生限定の転職サポートもあり、TechAcademyで学んだスキルを生かせる職場への転職も可能です。

「セット割」を活用すると、Pythonを使った人工知能・データ分析のスキルを過不足なく身につけられます。

1週間の無料体験があるので、システムの使い心地やサポート体制をのぞいてみるのがいいかなと思います。

» TechAcademyの無料体験はこちら

 

どちらのスクールも質問サポートが充実していて、早ければその場で、遅くとも次の日には疑問が解消するので、

「独学でプログラミングを勉強してきたけど、行き詰まるたびに時間が奪われるし、周りに気軽に聞ける人もいない」

みたいな無駄な一日を過ごすことがなくなります。

 

以上、Pythonを本格的に学べるプログラミングスクールを2校紹介しました。どちらも最初に20〜30万円くらいの投資が必要ですが、実際にスキルを身につけてしまえば、あとで簡単に回収できるはずです。例えば、

  • Pythonエンジニアに転職して年収を上げる:50万円
  • 副業で業務委託:20万円(時給5,000円で週10時間、1か月)
  • クラウドソーシングの単発案件:5〜10万円

このように、プログラミングスクールにお金を払ってもすぐに回収できることが分かると思います。

実際に、Pythonを使う業務委託で時給5,000円というのは普通にあるので、スキルをつけたら「週末にちょっと作業」を1〜2か月続けるだけですよね。

Google検索で問題解決するのもいいですが、「毎回ちょっと場当たり的に対応していて苦しいな・・・」と感じているあなたは、一度腰を据えてPythonを本格的に学ぶことを選択肢に入れてみてはいかがでしょうか。

記事で紹介したプログラミングスクールの一覧

  • Aidemy→人工知能特化、無料カウンセリングあり
  • TechAcademy→受講者数No.1、1週間の無料体験あり

RELATED POST

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください