Anonymous
Json.loads завершается с ошибкой, если одно из полей является строкой JSON.
Сообщение
Anonymous » 01 янв 2026, 13:50
Я пытаюсь записать строку JSON, содержащую политику AWS Firewall Manager, в файл JSON. Строка JSON выглядит следующим образом:
Код: Выделить всё
{
"PolicyName": "ExampleWAFPolicy",
"RemediationEnabled": true,
"ResourceTags": [
{
"Key": "Environment",
"Value": "Production"
},
{
"Key": "Application",
"Value": "WebApp"
}
],
"SecurityServicePolicyData": {
"Type": "WAFV2",
"ManagedServiceData": '{"type": "WAFV2", "preProcessRuleGroups": [{"managedRuleGroupIdentifier": {"vendorName": "AWS", "managedRuleGroupName": "AWSManagedRulesCommonRuleSet"}, "ruleGroupType": "ManagedRuleGroup", "overrideAction": {"type": "NONE"}, "ruleActionOverrides": [{"name": "SizeRestrictions_QUERYSTRING", "actionToUse": {"count": {}}}, {"name": "NoUserAgent_HEADER", "actionToUse": {"block": {}}}]}, {"ruleGroupArn": "arn:aws:wafv2:us-east-1:xxxx:regional/rulegroup/Test_RuleGroup/xxxxxxx", "ruleGroupType": "RuleGroup", "overrideAction": {"type": "COUNT"}, "ruleActionOverrides": [{"name": "TestRule", "actionToUse": {"count": {}}}]}], "postProcessRuleGroups": [{"managedRuleGroupIdentifier": {"vendorName": "AWS", "managedRuleGroupName": "AWSManagedRulesAmazonIpReputationList"}, "ruleGroupType": "ManagedRuleGroup", "overrideAction": {"type": "NONE"}, "ruleActionOverrides": [{"name": "AWSManagedIPReputationList", "actionToUse": {"block": {}}}]}], "defaultAction": {"type": "ALLOW"}, "loggingConfiguration": {"logDestinationConfigs": ["arn:aws:s3:::test-logs-bucket-12345"], "redactedFields": []}, "webACLSource": "DEFAULT"}',
"ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer"
},
"ExcludeResourceTags": false,
"IncludeMap": {
"ACCOUNT": [
]
},
"ResourceTagLogicalOperator": "AND"
}
Здесь поле ManagedServiceData представляет собой строку, содержащую JSON.
Когда я пытаюсь выполнить json.loads, я получаю следующую ошибку:
raise JSONDecodeError("Expecting value", s, err.value) from None
Как мне успешно записать это в JSON-файл? Я также должен иметь возможность получить его из файла JSON, чтобы использовать его для вызовов API менеджера брандмауэра.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... son-string
1767264653
Anonymous
Я пытаюсь записать строку JSON, содержащую политику AWS Firewall Manager, в файл JSON. Строка JSON выглядит следующим образом: [code]{ "PolicyName": "ExampleWAFPolicy", "RemediationEnabled": true, "ResourceTags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Application", "Value": "WebApp" } ], "SecurityServicePolicyData": { "Type": "WAFV2", "ManagedServiceData": '{"type": "WAFV2", "preProcessRuleGroups": [{"managedRuleGroupIdentifier": {"vendorName": "AWS", "managedRuleGroupName": "AWSManagedRulesCommonRuleSet"}, "ruleGroupType": "ManagedRuleGroup", "overrideAction": {"type": "NONE"}, "ruleActionOverrides": [{"name": "SizeRestrictions_QUERYSTRING", "actionToUse": {"count": {}}}, {"name": "NoUserAgent_HEADER", "actionToUse": {"block": {}}}]}, {"ruleGroupArn": "arn:aws:wafv2:us-east-1:xxxx:regional/rulegroup/Test_RuleGroup/xxxxxxx", "ruleGroupType": "RuleGroup", "overrideAction": {"type": "COUNT"}, "ruleActionOverrides": [{"name": "TestRule", "actionToUse": {"count": {}}}]}], "postProcessRuleGroups": [{"managedRuleGroupIdentifier": {"vendorName": "AWS", "managedRuleGroupName": "AWSManagedRulesAmazonIpReputationList"}, "ruleGroupType": "ManagedRuleGroup", "overrideAction": {"type": "NONE"}, "ruleActionOverrides": [{"name": "AWSManagedIPReputationList", "actionToUse": {"block": {}}}]}], "defaultAction": {"type": "ALLOW"}, "loggingConfiguration": {"logDestinationConfigs": ["arn:aws:s3:::test-logs-bucket-12345"], "redactedFields": []}, "webACLSource": "DEFAULT"}', "ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer" }, "ExcludeResourceTags": false, "IncludeMap": { "ACCOUNT": [ ] }, "ResourceTagLogicalOperator": "AND" } [/code] Здесь поле ManagedServiceData представляет собой строку, содержащую JSON. Когда я пытаюсь выполнить json.loads, я получаю следующую ошибку: raise JSONDecodeError("Expecting value", s, err.value) from None Как мне успешно записать это в JSON-файл? Я также должен иметь возможность получить его из файла JSON, чтобы использовать его для вызовов API менеджера брандмауэра. Подробнее здесь: [url]https://stackoverflow.com/questions/79858545/json-loads-fails-when-one-of-the-fields-is-a-json-string[/url]