python - 将具有非唯一键值对的未命名 JSON 字典列表转换为单个字典

问题描述 投票:0回答:1

有一个 webhook 返回 SOAP XML 事件详细信息,我将在第一步将其转换为 JSON。生成的(部分)代码片段如下所示:

“参数”:[ { “名称”:“流程步骤Id”, “价值”: ”” }, { "name": "processVariantName", "value": "默认入职流程" }, { “姓名”:“personUuid”, “值”:“330790C275C5423DAB551676247FC935” }, { “名称”:“onbStableId”, “值”:“48E7ABAA133F4370ABBD8837C9E3CD7F” }, { "name": "personIdExternal", “值”:4890 } ]

这种类型的结构叫什么?它有两对,第一个键值对列出键名称,第二个键值对列出键值?我知道当不同的事件返回不同的参数集时,此结构可能会有所帮助。这样的话每次返回的参数都是一样的。

是否可以使用Python中的某种循环将其转换为标准化字典?我希望能够从这个 webhook 获得更严格且可寻址的事件警报,如下所示:

{ “流程步骤Id”:“”, "processVariantName" : "默认载入流程" , “personUuid”:“330790C275C5423DAB551676247FC935”, “onbStableId”:“48E7ABAA133F4370ABBD8837C9E3CD7F”, “personId外部”:“4890” }

谢谢您的帮助!

python list dictionary transform
1个回答
0
投票

你可以试试这个:

json_object = { "param": [
                {
                  "name": "processStepId",
                  "value": ""
                },
                {
                  "name": "processVariantName",
                  "value": "Default Onboarding Process"
                },
                {
                  "name": "personUuid",
                  "value": "330790C275C5423DAB551676247FC935"
                },
                {
                  "name": "onbStableId",
                  "value": "48E7ABAA133F4370ABBD8837C9E3CD7F"
                },
                {
                  "name": "personIdExternal",
                  "value": 4890
                }
          ]
}

def convert(obj):
    new_obj = {}

    for item in obj['param']:
        new_obj[item['name']] = str(item['value'])

    return new_obj

print(convert(json_object))

# output
{
 'processStepId': '', 
 'processVariantName': 'Default Onboarding Process',
 'personUuid': '330790C275C5423DAB551676247FC935',
 'onbStableId': '48E7ABAA133F4370ABBD8837C9E3CD7F',
 'personIdExternal': '4890'
 } 

如果您有不同的输入模式,您可能需要编辑

convert

© www.soinside.com 2019 - 2024. All rights reserved.