🌃
【PyJsonX】Json内にPythonコードを埋め込み、動的コンテンツを生成する。
PyJsonX
JSON に Python コードを埋め込むことで、ダイナミックコンテンツを生成するためのツール、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"
}
-
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 を出力
-
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)
Github
さらに詳しい情報や使い方の詳細は、PyJsonX ドキュメント をご覧ください。
新しいアイデアや質問があれば、お気軽にコメントください。
検索Tags: jsonで繰り返し処理, jsonでfor文
Discussion