1. 程式人生 > >jinja2 中的 Template 批量替換json字符串中的內容

jinja2 中的 Template 批量替換json字符串中的內容

方式 jinja2 query .text search word The sea jinja

項目中用到elasticsearch,使用Json格式查詢方式,一個查詢語句中有好幾個地方需要替換,且替換的值都相同。最開始把json轉為字符串發方式,利用format函數處理,發現再轉回json時無法成功,同事提醒可以用jinja2模板處理字符串,

second_search = """

    {
"query": {
"bool": {
"should": [
{
"bool": {
"should": [
{
"term": {

"{{ prod }}_name_en.text": {
"value": "{{ keyword }}",
"boost": 10
}
}
},
{
"term": {
"{{prod}}_name_zh.text": {
"value": "{{ keyword }}",

"boost": 10
}
}
}
]
}
},
{
"bool": {
"should": [
{
"wildcard": {
"{{prod}}_name_en.text": {

"value": "{{ keyword }}*",
"boost": 5
}
}
},
{
"wildcard": {
"{{prod}}_name_zh.text": {
"value": "{{ keyword }}*",
"boost": 5
}
}
}
]
}
},
{
"query_string": {
"fields": ["{{prod}}_name_en", "{{prod}}_name_zh"],
"query": "{{ keyword }}",
"boost": 1
}
}
]
}
}
}
"""
second_tpl = Template(second_search)
second_str = second_tpl.render(keyword=kws, prod=‘other‘)
second_json = json.loads(second_str)
經過這麽處理後再把字符串轉為json對象很順利

jinja2 中的 Template 批量替換json字符串中的內容