PythonのTkinterを使って簡単なJsonインデント整形ツールを作ってみた

2019年12月3日

みなさまおはこんばんにちは、せなです

今回はTkinterを使って簡単なJsonインデント整形のツールを作ってみましたので、公開します

始めに

このツールを作ったのはJsonのファイルを読むときに横並びに長ーく並んでおり
非常に読みにくいなと思ったからです

インターネットで「Json 整形」と検索するとそういった機能を提供しているサイトはありますが
大事な情報とかだと少々不安なので自分用に作りました

基本的に横並びのJsonをインデントしてきれいにしているだけですので確認のみにつかうことを推奨します

Jsonはインデント済みのファイルよりも横並びの方が容量を使わないので

環境

  • Windows10
  • Python3.8

Python3.8インストールしてない方は以下の記事をご参考にしてください

リンク:Python3.8インストール方法解説

Jsonインデントツール

まず下記にコードを載せておきます

import tkinter as tk
import json

# インデント整形
def json_fix_indent(event):
    text_json.delete('1.0', 'end')
    value = input_box.get()
    try:
        input_json = json.loads(value)
        output_json = json.dumps(input_json, indent=2)
        text_json.insert(tk.END, output_json)

    except json.JSONDecodeError:
        label.pack()


# ウィンドウ
window = tk.Tk()
window.title('Json Fix Indent Tool')
window.geometry('480x480')

# 入力用ボックス
input_box = tk.Entry(width=50)
input_box.insert(tk.END, "Jsonを入力")  # 初期入力値 邪魔ならコメントアウト推奨
input_box.pack()

# エラー用ラベル
label = tk.Label(text='Exception')

# json_fix_indent実行用 入力ボックスにJson必須
button = tk.Button(text='Button')
button.bind('<Button-1>', json_fix_indent)
button.pack()

# json_fix_indent結果表示
text_json = tk.Text(width=50)
text_json.pack()

window.mainloop()

以下を入力に使った場合には画像のような結果になります

{"number_1":1,"number_2":2,"number_3":3,"number_4":4,"number_5":5,"number_6":6,"number_7":7,"number_8":8,"number_9":9,"number_10":10}

整形前よりも見やすくなっていると思います

ソースコードをザックリ解説

tkinter入力が面倒なので省略名の「tk」を使用しています

import tkinter as tk

入力されたjsonのインデントを整形

input_json = json.loads(value)
output_json = json.dumps(input_json, indent=2)
text_json.insert(tk.END, output_json)

json以外が入力されたときのエラー処理

except json.JSONDecodeError:
        label.pack()

最後に

自分が使うように作っただけですので、すごい簡素です

また、何か作ったら記事にしようと思います

ここまで読んで下さり、ありがとうございました
ではでは~