如何比较两个json文件并在对象中返回不匹配的键和值(代码片段)

author author     2022-12-28     252

关键词:

JSON File1:

 [
    "App_Name": "Test1",
    "Instances": "2",
    "Memory": "2G",
    "Disk_Quota": "1G"
, 
    "App_Name": "Test2",
    "Instances": "2",
    "Memory": "2G",
    "Disk_Quota": "1G"
, 
    "App_Name": "Test3",
    "Instances": "1",
    "Memory": "1G",
    "Disk_Quota": "1G"
]

JSON file2:

 [ 
    "App_Name": "Test3",
    "Instances": "1",
    "Memory": "1G",
    "Disk_Quota": "5G"
 ,
    "App_Name": "Test1",
    "Instances": "3",
    "Memory": "2G",
    "Disk_Quota": "1G"
, 
    "App_Name": "Test2",
    "Instances": "2",
    "Memory": "8G",
    "Disk_Quota": "1G"
]

我必须比较这两个JSON文件,并且需要打印JSON对象中不匹配的值。

到目前为止,我已经尝试过这个

def Compare():

    with open("Jsonfile1.json") as f:
        data = f.read()
        env1 = json.loads(data)

    with open("jsonfile2.json") as f:
        data = f.read()
        env2 = json.loads(data)



    for name in env1:
            for names in env2:
                if name['App_Name'] == names['App_Name']:
                    if name['Instances'] != names['Instances']:
                        print("unmatched val  -i ".format(name['App_Name'],names['Instances']))
                        if name['Memory'] != names['Memory']:
                            # print(name['Memory'], names['Memory'])
                            print("unmatched val  -m ".format(name['App_Name'],names['Memory']))
                            if name['Disk_Quota'] != names['Disk_Quota']:
                                print("unmatched val  -k ".format(name['App_Name'],names['Disk_Quota']))

Compare()

例外的输出:

如果实例不匹配,则打印(jsonfile1实例值)如果内存不匹配,则打印(jsonfile1内存值)如果磁盘不匹配,则打印(jsonfile1磁盘值)

答案

通过它们的zip()进行迭代应该更快,更干净并完成工作:

zip()

输出:

for d1, d2 in zip(env1, env2):
    if d1["App_Name"] == d2.get("App_Name"):
        for key in d1:
            if d1.get(key) != d2.get(key):
                print(f"env1's value for key='key' is d1.get(key)")

与参数匹配时返回对象的键和值[重复]

】与参数匹配时返回对象的键和值[重复]【英文标题】:Returnkeysandvaluesofobjectwhenmatchingwithargument[duplicate]【发布时间】:2019-06-3017:01:14【问题描述】:目的是构建一个函数,它将一个对象数组作为第一个参数。作为第二个参数,... 查看详情

比较两个字段并在另一个表中返回不匹配的存储过程

】比较两个字段并在另一个表中返回不匹配的存储过程【英文标题】:StoredProceduretocomapre2fieldsandreturnmismactchinanothertable【发布时间】:2013-04-2413:59:54【问题描述】:我正在OracleSQLDeveloper中创建存储过程。我正在尝试比较2个表的... 查看详情

如何通过 jq 中这些键的键和值对 json 文件进行排序

】如何通过jq中这些键的键和值对json文件进行排序【英文标题】:Howtosortajsonfilebykeysandvaluesofthosekeysinjq【发布时间】:2015-07-3115:04:38【问题描述】:我们正在使用PentahoCTools库构建一个网站,它有一个图形仪表板编辑器,可以为... 查看详情

PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?

】PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?【英文标题】:PHP:Howtocomparekeysinonearraywithvaluesinanother,andreturnmatches?【发布时间】:2014-08-2413:35:29【问题描述】:我有以下两个数组:$array_one=array(\'colo... 查看详情

如何在 es6 中仅比较和过滤两个对象数组中不匹配的数组

】如何在es6中仅比较和过滤两个对象数组中不匹配的数组【英文标题】:Howtocompareandfilteronlyunmatchedarraysfromtwoarrayofobjectsines6【发布时间】:2020-04-2423:55:02【问题描述】:在我的Angular应用程序中,我试图仅获取从UI修改的更新数组... 查看详情

php:如何比较一个数组中的键与另一个数组中的值,并返回匹配?(代码片段)

我有以下两个数组:$array_one=array('colorZero'=>'black','colorOne'=>'red','colorTwo'=>'green','colorThree'=>'blue','colorFour'=>'purple','colorFive'=>'golden');$array_two=array('colorOne','co 查看详情

在对象的 json 数组中找到一个键值并返回另一个带有角度的键值

...aluewithangular【发布时间】:2019-06-0722:46:15【问题描述】:如何遍历我的json数据以找到两个特定的键值,例如weight=“8m”和meters=“7t”然后返回找到这两个值的对象的名称值,例如“25吨”。data.jso 查看详情

为啥我的 foreach 循环与 users.json 文件中的键不匹配

】为啥我的foreach循环与users.json文件中的键不匹配【英文标题】:Whyismyforeachloopnotmatchingthekeysinusers.jsonfile为什么我的foreach循环与users.json文件中的键不匹配【发布时间】:2020-01-2509:01:35【问题描述】:我正在尝试使用PHP和JSON(无... 查看详情

如何在iOS swift的tableview中使用json响应中的键和值?

】如何在iOSswift的tableview中使用json响应中的键和值?【英文标题】:HowtousekeyandvaluefromjsonresponseintableviewiniOSswift?【发布时间】:2019-09-1009:58:05【问题描述】:在tableview中,每个带有键和值标签的单元格,我可以将静态键值传递给... 查看详情

如何在javascript中获取json键和值?

】如何在javascript中获取json键和值?【英文标题】:Howtogetjsonkeyandvalueinjavascript?【发布时间】:2013-09-2511:56:37【问题描述】:我正在返回一个json,如下所示"name":"","skills":"","jobtitel":"Entwickler","res_linkedin":"GwebSearch"我正在尝试获取... 查看详情

Greenplum:如何从json中获取行中的键和值

】Greenplum:如何从json中获取行中的键和值【英文标题】:Greenplum:Howtogetkeyandvalueinrowfromjson【发布时间】:2021-07-3006:31:12【问题描述】:我的全科医生版本是:x86_64-pc-linux-gnu上的PostgreSQL8.3.23(GreenplumDatabase5.18.0buildcommit:6aec9959d367d... 查看详情

使用 *ngFor 访问对象的键和值

...6-06-0218:38:19【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

使用 *ngFor 访问对象的键和值

...6-06-0218:38:19【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

使用 *ngFor 访问对象的键和值

...6-06-0218:38:19【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

使用 *ngFor 访问对象的键和值

...6-06-0218:38:19【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

使用 *ngFor 访问对象的键和值

...6-06-0218:38:19【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

使用 *ngFor 访问对象的键和值

...8-09-0510:28:30【问题描述】:在使用*ngFor迭代对象时,我对如何在angular2中获取对象的key和value有点困惑。我知道在Angular1.x中有类似的语法ng-repeat="(key,value)indemo"但我不知道如何在angular2中做同样的事情。我尝试过类似 查看详情

如何从数组中的对象添加新的键和值?

】如何从数组中的对象添加新的键和值?【英文标题】:HowtoaddnewkeyandvaulefromobjectinsideArray?【发布时间】:2020-07-1004:29:38【问题描述】:我正在使用ReactJS和Redux,下面的代码显示了我如何在每个对象中添加一个新的key:value。实际... 查看详情