【Python】jsonファイルの扱い方

Python用モジュール「json」でjsonファイルを扱う方法についてソースコード付きでまとめました。

【はじめに】jsonファイルとは

JSON(JavaScript Object Notation)とは、JavaScript言語のオブジェクト表記法をベースとしたテキスト形式のデータファイルです。
XMLと比べて簡潔に構造化データを記述できます。
そのため、Webサービスなどよく利用されています。

Pythonでは標準モジュール「json」等でJSON形式のデータファイルを扱うことができます。
JSON形式ファイルの書式は次の通りです。

書式

{キー1:要素1, キー2:要素2,…}

よって、Pythonの辞書とJSON形式はほとんど同じなものです。

{
    "西住":{
        "height": 158 ,
        "position": "車長"
    },
    "秋山":{
        "height": 157 ,
        "position": "装填手"
    }
}

【基本操作】JSONファイルの読み込み・書き込み

Pythonの標準モジュール「json」を用いて、JSON形式ファイルのロードします。

# -*- coding:utf-8 -*-
import json

#JSON ファイルの読み込み
f = open('test.json', 'r', encoding="utf-8_sig")
json_data = json.load(f)

print(json_data)
f.close()

test.json

読み込んだJSONファイルです。

{
    "西住":{
        "height": 158 ,
        "position": "車長"
    },
    "秋山":{
        "height": 157 ,
        "position": "装填手"
    }
}

補足

Windows環境を使用しているとjson.loadメソッドが「デフォルトでcp932でコーディング」されます。
そのため、UTF-8のJSONファイルを読み込み時は、UTF-8でコーディングする様にjson.loadメソッドに引数で指定します。
■参考:【Python/json】「UnicodeDecodeError: ‘cp932’ codec can’t decode~」エラーの対処方法

書き込み

# -*- coding:utf-8 -*-
import json

# 空の辞書を作成
data = {}

# 辞書にデータを挿入
data["西住"] = {"height": 158 , "position": "車長"}
data["秋山"] = {"height": 157 , "position": "装填手"}

# JSONファイルに出力
json.dumps(data, ensure_ascii=False)

test.json

出力したJSONファイルです。

{
     "西住":{
        "height": 158 ,
        "position": "車長"
    },
    "秋山":{
        "height": 157 ,
        "position": "装填手"
    }
}

補足

json.dumpsで、「ensure_ascii=False」を指定することで出力されるJSONファイルの文字コードがUTF-8となり日本語の文字化けを回避できます。

詳細ページ
読み込み JSONファイルの読み込み
書き込み JSONファイルの書き込み

【データ処理】特定のデータ(要素)を取り出す

Pythonの標準モジュール「json」を用いて、JSON形式ファイルのロードします。
ロードしたデータは辞書型なので、キーを指定することで要素を取り出せます。

# -*- coding:utf-8 -*-
import json

#JSON ファイルの読み込み
f = open('test.json', 'r', encoding="utf-8_sig")
json_data = json.load(f)

print(json_data["西住"]) # {'height': 158, 'position': '車長'}
print(json_data["秋山"]) # {'height': 157, 'position': '装填手'}
f.close()

test.json

読み込んだJSONファイルです。

{
    "西住":{
        "height": 158 ,
        "position": "車長"
    },
    "秋山":{
        "height": 157 ,
        "position": "装填手"
    }
}
詳細ページ
抽出 データ(要素)の抽出

【ファイル変換】CSV、JSON

Pythonモジュール「Pandas」ではread_jsonメソッドでJSONファイルを読み込み、to_csvメソッドでCSVに変換して保存できます。

JSON → CSV

JSONからCSVに変換するソースコードです。

# -*- coding: utf-8 -*-
import pandas as pd

# JSONファイルを読み込む
df = pd.read_json("C:\prog\python\\test\data.json", encoding="UTF-8")

# CSVに変換して保存
df.to_csv("C:\prog\python\\test\data.csv", encoding="UTF-8")

CSV → JSON

CSVからJSONに変換するソースコードです。

# -*- coding: utf-8 -*-
import pandas as pd

# CSVファイルを読み込む
df = pd.read_csv("C:\prog\python\\test\data.csv", encoding="UTF-8")

# JSONに変換して保存
df.to_json("C:\prog\python\\test\data.json")

■data.json

{
    "西住":{
        "height": 158 ,
        "position": "車長"
    },
    "秋山":{
        "height": 157 ,
        "position": "装填手"
    }
}

■data.csv

,西住,秋山
height,158,157
position,車長,装填手
【Python】JSONファイルとCSVファイルの相互変換
PythonでJSONファイルとCSVファイルを相互に変換する方法についてソースコード付きでまとめました。
【Python超入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。 主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...

コメント