如何在Jinja2中将字符串转换为字典并访问其属性?
解决Jinja2中JSON字符串无法直接访问属性的问题
你的data变量本质是JSON格式的字符串,不是Jinja2能直接解析的字典对象,所以直接用{{data.a}}这种点语法肯定访问不了。
在Jinja2里可以用内置的fromjson过滤器把JSON字符串转换成字典,之后就能正常访问属性了:
直接链式调用过滤器访问:
{{ data|fromjson.a }} --> 1 {{ data|fromjson.b }} --> 2如果需要多次访问这个字典的属性,建议先把转换后的结果赋值给一个变量,避免重复转换:
{% set data_dict = data|fromjson %} {{ data_dict.a }} --> 1 {{ data_dict.b }} --> 2 {{ data_dict.c }} --> 3
如果担心JSON格式可能出错导致渲染失败,可以给fromjson加默认值和错误忽略参数,这样即使字符串格式不对也不会抛出异常:
{{ data|fromjson({}, true).a }}
这里第一个参数{}是格式错误时返回的默认空字典,第二个参数true表示忽略解析错误。
内容的提问来源于stack exchange,提问作者mirtillamalcontenta
相关产品推荐
相关产品推荐

