🌃

【PyJsonX】Json内にPythonコードを埋め込み、動的コンテンツを生成する。

2024/08/18に公開

PyJsonX

JSON に Python コードを埋め込むことで、ダイナミックコンテンツを生成するためのツール、PyJsonX を公開したので紹介します。
https://github.com/nnnnnnn0090/PyJsonX

例えば、jsonにunixtimeを入れたい時、配列で同じ要素を100個繰り返したいときなど、
読み込んでから行ってもいいですが、コードが長くなり、jsonの構造を変更したとき、メインプログラムも修正する必要がでてきます。PyJsonXはそういう場合に便利です。

インストール

pip3 install PyJsonX
# または
pip3 install git+https://github.com/nnnnnnn0090/PyJsonX

拡張子

PyJsonX で使うファイルの拡張子は .pyjsonX です。
example.pyjsonX
.pyjsonX用のVSCode拡張機能も公開しました。(シンタックスハイライト)
VisualStudio Marketplace

使い方

JSON内にPythonコードを埋め込む

PyJsonX では、<?py ... ?> タグを使って JSON の中に Python コードを埋め込みます。
動的なデータを生成することができます。

example.pyjsonX
{
    "static_field": "value",
    <?py
        result = ""
        # 0 から 4 までの値を持つ動的フィールドを生成
        for i in range(5):
            result += f'"dynamic_{i}": "{i * 2}", \n'
        return result
    ?>
    "another_static_field": "another_value"
}

このコードを実行すると、次のような JSON が生成されます

test.py
import PyJsonX
import os

def main():
    json_file_path = os.path.join(os.path.dirname(__file__), 'example.pyjsonX')
    with open(json_file_path, 'r', encoding='utf-8') as file:
        print(PyJsonX.execute(file.read()))

if __name__ == "__main__":
    main()
{
    "static_field": "value",
    "dynamic_0": "0",
    "dynamic_1": "2",
    "dynamic_2": "4",
    "dynamic_3": "6",
    "dynamic_4": "8",
    "another_static_field": "another_value"
}

  1. JSON 文字列からの実行:

    import PyJsonX
    
    json_str = '''
    {
        "static_field": "value",
        <?py
            result = ""
            # 0 から 4 までの値を持つ動的フィールドを生成
            for i in range(5):
                result += f'"dynamic_{i}": "{i * 2}", \n'
            return result
        ?>
        "another_static_field": "another_value"
    }
    '''
    
    # JSON 文字列を処理し、埋め込まれた Python コードを実行
    processed_str = PyJsonX.execute(json_str)
    print(processed_str)  # 処理された JSON を出力
    
  2. JSON ファイルからの実行:

    import PyJsonX
    
    input_json_path = 'input.json'  # 入力 JSON ファイルのパス
    output_json_path = 'output.json'  # 出力 JSON ファイルのパス
    
    # JSON ファイルを処理し、埋め込まれた Python コードを実行
    PyJsonX.execute_file(input_json_path, output_json_path)
    

Twitter

Github

さらに詳しい情報や使い方の詳細は、PyJsonX ドキュメント をご覧ください。
新しいアイデアや質問があれば、お気軽にコメントください。

検索Tags: jsonで繰り返し処理, jsonでfor文

Discussion