首页 > 解决方案 > 如何在python中的对象数组上应用过滤器

问题描述

我是一名 Java 开发人员,试图在 python 中编写脚本。我有以下 JSON:(json1)

{
    "name": "Data",
    "id": "9c27ea56-6f9e-4694-a088-c1423c114e88",
    "nodes": [
        {
            "id": "6eb8cb19-53e5-4f1d-88f3-119a3ee09b5d",
            "properties": [
                {
                    "visible": true,
                    "uniqueness": true,
                    "id": "ab6d8974-59a2-4f5d-b026-d9ed54886fa8",
                    "dataType": "String",
                    "shortName": "id",
                    "longName": "id"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "24f5547e-c360-4293-9e67-10b19d38c774",
                    "dataType": "String",
                    "shortName": "event_id",
                    "longName": "event_id"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "2929d02b-950f-4495-8b36-04ea4c142f8d",
                    "dataType": "String",
                    "shortName": "event_name",
                    "longName": "event_name"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "3456d02b-950f-4495-8b36-04ea4c142f8d",
                    "dataType": "String",
                    "shortName": "event_date",
                    "longName": "Event Date"
                }
            ]
        }
    ]
}

我还有另一个相同的 json,但做了一些修改。像这样的东西:(json2)

{
    "name": "Data",
    "id": "9c27ea56-6f9e-4694-a088-c1423c114e88",
    "nodes": [
        {
            "id": "6eb8cb19-53e5-4f1d-88f3-119a3ee09b5d",
            "properties": [
                {
                    "visible": true,
                    "uniqueness": true,
                    "id": "ab6d8974-59a2-4f5d-b026-d9ed54886fa8",
                    "dataType": "String",
                    "shortName": "id",
                    "longName": "id"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "24f5547e-c360-4293-9e67-10b19d38c774",
                    "dataType": "String",
                    "shortName": "event_id",
                    "longName": "event_id"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "2929d02b-950f-4495-8b36-04ea4c142f8d",
                    "dataType": "String",
                    "shortName": "event_name",
                    "longName": "Event Name"
                },
                {
                    "visible": true,
                    "uniqueness": false,
                    "id": "123245g-950f-4495-8b36-04ea4c142f8d",
                    "dataType": "String",
                    "shortName": "event_status",
                    "longName": "Event Status"
                }
            ]
        }
    ]
}

现在在 json2 中,我在属性数组中添加了除 json1 之外的更多对象。

当我在“属性”数组上迭代 json1 时,我想检查它是否存在于“属性”的 json2 数组中。为了检查这一点,我想验证 shortName 是否相等(在 json1 属性数组和 json2 属性数组中)

这里 json1 被认为是基础对象。

那么如何根据shortName(来自“properties”数组)过滤“properties”数组。作为属性是一个对象数组。

标签: python

解决方案


最方便的方法是使用 json.loads,这样你就可以得到然后得到 key,value pares。

# load the json object
jsonlist = json.loads(your_json)

#Show the list from properties 
print(jsonlist['properties'])

#get the kets from the json list 
for field in jsonlist['properties']:
    for key, value in field.items():
        print(key, value)

推荐阅读