2017-05-11 12 views
0

文字列形式に似た形式変数を持つJSONがあります。変数を実際の値に置き換えて読み込むことができます。例えば辞書でのJSONの書式設定

、JSONの場合:

[ 
    { 
     "role": "President", 
     "name": "{first_name}", 
     "age": "{first_age}" 
    }, 
    { 
     "role": "Vice President", 
     "name": "{second_name}", 
     "age": "{second_age}" 
    } 
] 

そして私はフォーマットしたい辞書がある:

{"first_name": "Bob", "first_age": "50", "second_name": "Bill", "second_age": "35"} 

私が取得したいのですが:

[ 
    { 
     "role": "President", 
     "name": "Bob", 
     "age": "50" 
    }, 
    { 
     "role": "Vice President", 
     "name": "Bill", 
     "age": "35" 
    } 
] 

フォーマットを使用してJSONを文字列に変換してから、辞書のリストに戻してみました:

from ast import literal_eval 
literal_eval(str(raw_json).format(**json_params)) 

しかし、辞書の中括弧はフォーマット関数を混乱させ、私にKeyError例外を与えます。私はそれらの間に変数名を持たない中括弧のすべてのペアを二重中括弧で置き換えることができると思いますが、それは間違っていたり、非常にPythonではありません。

この問題を解決する最も洗練された方法は何ですか?

答えて

1

あなたが探しているものは、テンプレートエンジンです。 テンプレートはjson文字列であり、このテンプレートにデータを注入する必要があります。 Pythonでそれを行うための正しいツールはjinja2

+0

非常に数行あります - ありがとう! – GabeL