使用Python修改JSON不起作用

2024-04-19 11:08:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的json数据:

[
{
    "select": false, 
    "children": [
        {
            "title": "NPS", 
            "key": "", 
            "children": [
                {
                    "title": "Telstra", 
                    "key": "", 
                    "children": [
                        {
                            "title": "Overall", 
                            "key": "", 
                            "children": [
                                {
                                    "title": "NPS Score", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-NPSScore", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "% Promoters", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-Promoters", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "% Passives", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-Passives", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "% Detractors", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-Detractors", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "% Reactors", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-Reactors", 
                                    "children": [], 
                                    "select": false
                                }
                            ], 
                            "select": false
                        }
                    ], 
                    "select": false
                }
            ], 
            "select": false
        }, 
        {
            "title": "NPS 2nd", 
            "key": "", 
            "children": [
                {
                    "title": "Telstra 2nd", 
                    "key": "", 
                    "children": [
                        {
                            "title": "Overall 2nd", 
                            "key": "", 
                            "children": [
                                {
                                    "title": "%XYZ", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-XYZ", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "%ABC", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-ABC", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "%UV", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-UV", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "title": "%MN", 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-MN", 
                                    "children": [], 
                                    "select": false
                                }, 
                                {
                                    "select": false, 
                                    "key": "NPS_Telstra_NA_NA_NPS-CVA-JKL", 
                                    "title": "%JKL"
                                }
                            ], 
                            "select": false
                        }
                    ], 
                    "select": false
                }
            ], 
            "select": false
        }
    ], 
    "key": "", 
    "title": "Central Question"
 }
]

我有一个关键值列表,比如:

mylist = ["NPS_Telstra_NA_NA_NPS-CVA-JKL", "NPS_Telstra_NA_NA_NPS-CVA-MN", "NPS_Telstra_NA_NA_NPS-CVA-NPSScore"]

我只想为列表中的key值将JSON "select" keyFalse修改为True。你知道吗

我找不到任何办法。有什么建议吗?你知道吗


Tags: keyfalsetitlejklselectnachildrenmn
1条回答
网友
1楼 · 发布于 2024-04-19 11:08:39

您需要在整个结构中递归;任何带有children键的内容都可以递归,任何列表中带有key键的内容都可以更改:

def set_selects(data, keys):
    for item in data:
        if 'children' in item:
            set_selects(item['children'], keys)
        if item.get('key') in keys:
            item['select'] = True

这会改变现有的结构。如果你把你的列表变成一个集合,它会更有效:

data = json.loads(your_json_string)
set_selects(data, set(mylist))

相关问题 更多 >