【Python・データ前処理】JSONデータ読み込み・パース・文字列変換・書き込み方法・コード使い方解説

こんにちは、Kosei(@kay_diacc2)です!

PythonのWebアプリケーションを取り扱う際、JSON形式のデータはどのように変換処理するの?」本記事ではこの疑問に回答します。記事前半では、JSON形式のデータが用いられる意義を紹介します。後半部分はPythonの値とJSON形式データの相互変換方法について触れます。

目次

JSONとは

JSON(JavaScript Object Notation)とは、JavaScriptのオブジェクト記法を用いたデータフォーマットです。JSONはJavaScriptだけでなく、Python、Ruby、Java、PHP、C++など様々なプログラミング言語に対応しているため、JSON形式データを経由することにより、言語間でのデータ交換を容易に実現させることができます。

JSON形式データの見方

JSON形式のデータは、キー(Key)バリュー(Value)の組み合わせを1つのデータセットと見立てて表現されます。記載時は{}で囲み、キー・バリュー間にはコロン(:)を記載します。またエラー防止の注意点として、JSONの文字列は必ずダブルクォート( ” )で囲むようにします。

{"Key1":Value1}

複数のキー・バリュー・ペアを記述する場合は下記のように表現します。

{"Key1":Value1, "Key2":Value2, "Key3":Value3}

JSONで記述可能なデータ形式

JSONで記述できるデータ形式は下記になります。

  • 文字列
  • 整数
  • 浮動小数点数
  • ブール値
  • リスト
  • 辞書
  • null値

データ形式が全てJSONで保持されるわけではない点に注意しましょう。例えば、Pythonで保持可能なFileオブジェクトやCSVのReader等はJSONで保持できません。

Pythonによるjsonモジュールの使い方解説

JSONファイルからデータを読み込む

まず、JSONファイルからデータを読み取る方法を解説します。下記のJSONサンプルファイルをPythonで読み込んだ場合のコード記述を示します。

{
    "1":{
        "name":"Tanaka",
        "Age":24,
        "Address":"Tokyo",
        "mail":null
    },   
    "2":{
        "name":"Sato",
        "Age":30,
        "Address":"Osaka",
        "mail":"sample@abcd.com"
    } 
}
import json
# JSONファイルがあるファイルパス
file_path = 'sample.json'

# Open関数でファイルをロード
with open(file_path) as f:
    data = json.loads(f.read())

# 出力
print(data)

JSONデータをパースする

まず、パースとは一言で「構文解析」を意味します。PythonでJSONデータをパースするとは、JSON形式のデータから必要なデータを取り出し、Pythonプログラムの中で利用できるよう変換することを指します。

ここで、JSON-Python間のデータの変換処理を行う際、代表的なメソッドとして下記二つがあります。

  • json.loads():JSONデータをPythonの値に変換
  • json.dumps():Pythonの値をJSONデータに変換

実際にPythonコードを記載し、データ変換処理を体現してみましょう!

loads()関数でJSON読み込み

JSON形式データからPython値への変換は、json.loads()関数を用います。以下変換方法と出力結果を示します。

import json

#JSONデータ
json_data = '{"name":"Tanaka","Age":24,"Country":"Japan","Registered":true,"mail":null}'

#値変換:JSON → Python
json_data_to_python_value = json.loads(json_data)
print(json_data_to_python_value)
# json_data_to_python_valueの出力結果
#  {'name': 'Tanaka',
#   'Age': 24,
#   'Country': 'Japan',
#   'Registered': True,
#   'mail': None}

json.loads関数の戻り値はPythonの辞書型です。辞書型は順序が保持されないため、出力値のキー・バリュー・ペアの順序は元のJSONと異なる場合があります。

dumps()関数でJSON書き出し

Pythonの値からJSON形式データへの変換は、json.dumps()関数を用います。以下変換方法と出力結果を示します。

import json

#Pythonデータ
python_dict = {'Registered':True,'Age':25,'name':'Tanaka','mail':None}

#値変換:Python → JSON
json_data = json.dumps(python_dict)
print(json_data)
# json_dataの出力結果
# '{"Registered": true, "Age": 25, "name": "Tanaka", "mail": null}'

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる