JSON文字列を整形するシンプルなデスクトップアプリケーションを、PythonのPySimpleGUIとPyInstallerを用いて作成する方法を紹介します。このツールは、標準的なダブルクォート形式だけでなく、シングルクォートを含む非標準JSONも処理可能です。
まず、入力された文字列を解析し、適切に整形するためのコアロジックを実装します:
import json
def format_json(input_str):
try:
# 標準JSON(ダブルクォート)をパース
parsed = json.loads(input_str)
except json.JSONDecodeError:
try:
# 非標準JSON(シングルクォートなど)をevalで処理
parsed = eval(input_str)
except Exception:
raise ValueError("無効なJSON形式です")
# 整形済みJSONを生成(日本語対応、インデント4)
formatted = json.dumps(parsed, indent=4, ensure_ascii=False)
return formatted, "black"
次に、GUIインターフェースをPySimpleGUIで構築します:
import PySimpleGUI as sg
from json_formatter import format_json # 上記関数を別モジュールとして分離
def launch_formatter():
layout = [
[sg.Text("入力JSON:", font=("Meiryo", 12))],
[sg.Multiline(key="-INPUT-", size=(90, 8), font=("Consolas", 10))],
[sg.Button("整形実行", size=(15, 1), bind_return_key=True)],
[sg.Text("整形結果:", font=("Meiryo", 12))],
[sg.Multiline(key="-OUTPUT-", size=(90, 12), font=("Consolas", 10), text_color="black")]
]
window = sg.Window("JSON整形ツール", layout, finalize=True)
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, "キャンセル"):
break
if event == "整形実行":
raw_input = values["-INPUT-"].strip()
if not raw_input:
window["-OUTPUT-"].update("入力が空です", text_color="red")
continue
try:
result, color = format_json(raw_input)
window["-OUTPUT-"].update(result, text_color=color)
except Exception as e:
window["-OUTPUT-"].update(f"エラー: {str(e)}", text_color="red")
window.close()
if __name__ == "__main__":
launch_formatter()
完成したスクリプトをスタンドアロンのWindows実行ファイルに変換するには、以下のPyInstallerコマンドを実行します:
pyinstaller --onefile --windowed --name "JSONFormatter" JSON_format_tool.py
これにより、依存ライブラリを内包した単一の実行ファイルが生成され、Python環境を持たないユーザーでも利用可能になります。