Column

プログラミング
jsonファイルの任意の情報ををcsvファイルに抽出する方法
2023.12.28

こんにちは、齋藤です。

Bitwardenからエクスポートしたjsonファイルの情報をCSVに抽出したかったので、Pythonスクリプトを作りました。
何かの参考になれば幸いです。

import json
import csv

def extract_item_data(json_data):
    if "items" in json_data:
        return json_data["items"]
    else:
        raise ValueError("No 'items' found in JSON data.")

def convert_to_csv(item_data, csv_file_path):
    with open(csv_file_path, 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ["name", "username", "password", "notes"]
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for item in item_data:
            name = item.get("name", "")
            username = item.get("login", {}).get("username", "")
            password = item.get("login", {}).get("password", "")
            notes = item.get("notes", "")

            writer.writerow({"name": name, "username": username, "password": password, "notes": notes})

# 読み込むJSONファイルのパス
json_file_path = 'JSONファイルのパス'

# JSONデータの読み込み
with open(json_file_path, 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

try:
    # "items"内のデータ抽出
    item_data = extract_item_data(json_data)

    # CSVファイルへの出力
    csv_file_path = 'CSVファイルのパス'
    convert_to_csv(item_data, csv_file_path)

    print(f"CSV file '{csv_file_path}' successfully created.")
except ValueError as e:
    print(f"Error: {e}")