首页 > 解决方案 > Python 转换 json

问题描述

我有一个包含如下条目的文本文件:

[
{
    "Exceptions": {
        "GUID": "028326A8206D44A736B45FE6125E59B2",
        "ExceptionName": "madrid,barcelona",
        "TargetHostname": "www.spain.com",
        "TargetName": "spain",
        "HasModule": true
    }
},

{
    "Exceptions": {
        "GUID": "028326A8206D44A736B45FE6125E59B2",
        "ExceptionName": "london,liverpool",
        "TargetHostname": "www.uk.com",
        "TargetName": "uk",
        "HasModule": true
    }
},

{
    "Exceptions": {
        "GUID": "028326A8206D44A736B45FE6125E59B2",
        "ExceptionName": "dublin,cork",
        "TargetHostname": "www.ireland.com",
        "TargetName": "ireland",
        "HasModule": true
    }
}
]

我想要每个城市的规则,我需要修改这个json。

我用python尝试了一些东西,但我没有得到类似的东西

我需要一个 pyhton 脚本来将此输入规则转换为下面的模型。预期的结果是,我希望结果是这样的:

所以我需要每个城市给我一个像json里面的规则。感谢大家的帮助。

我需要每个国家/地区的每条规则……保持在该国家/地区的特定 json 范围内。

例如 spain.json

[
{
"Exceptions": {
    "GUID": "028326A8206D44A736B45FE6125E59B2",
    "ExceptionName": "madrid",
    "TargetHostname": "www.spain.com",
    "TargetName": "spain",
    "HasModule": true
  }
 },
 {
"Exceptions": {
    "GUID": "028326A8206D44A736B45FE6125E59B2",
    "ExceptionName": "barcelona",
    "TargetHostname": "www.spain.com",
    "TargetName": "spain",
    "HasModule": true
  }
 }
]

例如 uk.json

[
{
"Exceptions": {
    "GUID": "028326A8206D44A736B45FE6125E59B2",
    "ExceptionName": "london",
    "TargetHostname": "www.uk.com",
    "TargetName": "uk",
    "HasModule": true
  }
 },
 {
"Exceptions": {
    "GUID": "028326A8206D44A736B45FE6125E59B2",
    "ExceptionName": "liverpool",
    "TargetHostname": "www.uk.com",
    "TargetName": "uk",
    "HasModule": true
  }
 }
]

你可以帮我解决这个问题。

标签: pythonjson

解决方案


import copy
import json
mylist = []
for e in a: #a is the original list.
    mylist = []
    for city in e["Exceptions"]["ExceptionName"].split(","):
        new = copy.deepcopy(e)
        new["Exceptions"]["ExceptionName"] = city
        mylist.append(new)
    with open(f"{new['Exceptions']['TargetName']}.json", "w") as f:
        json.dump(mylist, f)

推荐阅读