json - Jinja 解析嵌套的 JSON
问题描述
这是我第一次尝试使用 Jinja 或任何与 Python 相关的东西,但是我们的供应商已经实现了一个使用它的新工具,所以我们到了。
作为测试,我使用免费的 API 作为数据源,并希望通过该工具的 Jinja 对其进行转换。API 是http://www.floatrates.com/daily/usd.json ...
{"eur":{
"code":"EUR",
"alphaCode":"EUR",
"numericCode":"978",
"name":"Euro",
"rate":0.90140326265491,
"date":"Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate":1.1093813850359},
"gbp":{
"code":"GBP",
"alphaCode":"GBP",
"numericCode":"826",
"name":"U.K. Pound Sterling",
"rate":0.76735727130961,
"date":"Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate":1.3031739417721},
"jpy":{
"code":"JPY",
"alphaCode":"JPY",
"numericCode":"392",
"name":"Japanese Yen",
"rate":109.99188913429,
"date":"Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate":0.009091579459819}...
我的目标是遍历内容(该工具在 content 属性中具有响应的主体)并获取每个内容的代码和最终速率。一旦我能够成功获得这些价值观,我就知道该怎么做......这是我到目前为止所拥有的
{% set Collection = a.content|to_json %}
{% for obj in Collection %}
{% set CurrentObject = obj %}
{{ Collection[CurrentObject].code }}
{% endfor %}
但是,这似乎不起作用...如果我执行 a.content|to_json['eur'].code 那么我将 EUR 作为一个值,但我试图不对每次迭代进行硬编码。
提前致谢。
解决方案
我不认为你想要那个to_json
过滤器。这是为了生成数据结构的 JSON 表示。你不想要那个;你实际上想要数据结构。
如果您在content
属性中的问题中有数据,则可以编写如下内容:
{% for code in content %}
{{ code }} {{ content[code].rate }}
{% endfor %}
这会给你:
eur 0.90140326265491
gbp 0.76735727130961
jpy 109.99188913429
这是我用来测试的代码:
import jinja2
content = {
"eur": {
"code": "EUR",
"alphaCode": "EUR",
"numericCode": "978",
"name": "Euro",
"rate": 0.90140326265491,
"date": "Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate": 1.1093813850359,
},
"gbp": {
"code": "GBP",
"alphaCode": "GBP",
"numericCode": "826",
"name": "U.K. Pound Sterling",
"rate": 0.76735727130961,
"date": "Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate": 1.3031739417721,
},
"jpy": {
"code": "JPY",
"alphaCode": "JPY",
"numericCode": "392",
"name": "Japanese Yen",
"rate": 109.99188913429,
"date": "Tue, 21 Jan 2020 12:00:01 GMT",
"inverseRate": 0.009091579459819,
},
}
t = jinja2.Template('''{% for code in content %}
{{ code }} {{ content[code].rate }}
{% endfor %}''')
print(t.render(content=content))
推荐阅读
- javascript - 如何在反应中显示元标记?
- flutter - 如何在颤动中覆盖主题样式
- fhe - Palisade:明文和密文之间的 EvalMult 导致塔大小不匹配
- javascript - 我正在尝试对创建 facebook 帐户进行自动化测试
- graph - 多层图/多层网络和图卷积网络
- python - 在 PythonAnywhere 中导入 Pywhatkit 时出现“Xlib.error.DisplayConnectionError:”
- reactjs - 列表中的每个孩子都应该有一个唯一的“关键”道具。(我使用了 Key 仍然出现此错误)
- unit-testing - Hyperledger Fabric 2.3 单元测试
- sql - 根据输入日期获取日期范围(日和月)内的所有数据
- r - 在不使用 R 中的内置函数的情况下生成几何变量