【发布时间】:2021-11-28 12:08:41
【问题描述】:
我想比较两个没有顺序的json数据,因为有相同的项目有不同的顺序。比如第一个json:
[{'Id': 113, 'Label': 'Z', 'Input': 'Z', 'Updated': False},
{'Id': 124, 'Label': ' X', 'Input': ' X', 'Updated': False},
{'Id': 128, 'Label': ' C', 'Input': ' C', 'Updated': False},
{'Id': 117, 'Label': ' R', 'Input': ' R', 'Updated': False},
{'Id': 118, 'Label': ' T', 'Input': ' T', 'Updated': False}]
第二个Json
[{'Id': 128, 'Label': ' C1', 'Input': ' C1', 'Updated': False},
{'Id': 118, 'Label': ' T1', 'Input': ' T1', 'Updated': False}
{'Id': 113, 'Label': 'Z2', 'Input': 'Z2', 'Updated': False},]
我想从第二个 json 更新不同的数据但相同的 ID json,并从第一个 Json 中删除第二个 json 没有的数据。所以我的循环如下:
for form in selectedUserForm:
for jsonItem in getJson:
if form.id == jsonItem['Id'] and form.isUpdated == False:
form.metaKey = jsonItem['Label']
form.metaVal = jsonItem['Input']
form.isUpdated = True
form.save()
elif jsonItem['Id'] == 0:
newMeta = UserMeta(user = selectedUser, metaVal = jsonItem['Input'].title(), metaKey = jsonItem['Label'].title(), isUpdated = True)
newMeta.full_clean()
newMeta.save()
elif form.isUpdated == False:
form.isDeleted = True
form.isUpdated = True
form.save()
但是,此算法仅按顺序生成,但我的列表是从获取数据中发布的,并且它们的顺序不同。
【问题讨论】:
-
你想用基于
Id键的新JSON替换旧的JSON?
标签: python json django compare nested-loops