首页 > 解决方案 > 将变量传递给 String vale,这是 Python 中的 JSON

问题描述

我需要传递一个变量作为date变量来代替 Sting 值 我需要传递日期来代替2020-12-31

我的字符串值看起来像

from datetime import datetime, timedelta

date =(datetime.now() - timedelta(2)).strftime('%Y-%m-%d')

TableMappings="""{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "SCHEMA",
                "table-name": "AUDIT_TABLE"
            },
            "rule-name": "1",
            "filters": [
                {
                    "filter-type": "source",
                    "column-name": "UTC_DATE_TIME",
                    "filter-conditions": [
                        {
                            "filter-operator": "gte",
                            "value": "2020-12-31"
                        }
                    ]
                }
            ]
        }
    ]
}"""

标签: pythonjsonpython-3.xboto3

解决方案


您不一定需要使用 JSON 的字符串表示进行操作并尝试对其进行模板化,您可以使用内置dict数据类型。

import json
from datetime import datetime, timedelta

date =(datetime.now() - timedelta(2)).strftime('%Y-%m-%d')

dict_mapping = {
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "SCHEMA",
                "table-name": "AUDIT_TABLE"
            },
            "rule-name": "1",
            "filters": [
                {
                    "filter-type": "source",
                    "column-name": "UTC_DATE_TIME",
                    "filter-conditions": [
                        {
                            "filter-operator": "gte",
                            "value": date
                        }
                    ]
                }
            ]
        }
    ]
}

str_mapping = json.dumps(dict_mapping)

如果不使用 jinja2 之类的模板引擎,尝试格式化嵌套的多行字符串并不方便,但最终传输另一端的机器不会关心它看起来有多好,如果它期望普通的旧 JSON。


推荐阅读