我计划使用python脚本以指定的时间间隔(每天2次)从day服务中提取数据。在获得json格式的数据后,我想将其与上次提取的数据进行比较,然后将差异作为json数据提供,存储提取的json以供下一次比较,并删除之前的数据。
diff json将始终具有相同的模式,类似于下面的示例:
[
{"Title" : "Class1", "ID" : "155e5acc-aaa7e-2872ade", "Time" : "2020-10-15 08:15:00", "Participants": 0, "Cancelled": 0, "Booked": 0, "Full":0 },
{"Title" : "Class3", "ID" : "235e5a3b-b890e-3200ad9", "Time" : "2020-10-15 11:00:00","Participants": 11, "Cancelled": 0, "Booked": 1, "Full":0 },
{"Title" : "Class0", "ID" : "985e5a4a-3cd7e-ac87a76","Time" : "2020-10-15 15:30:00","Participants": 5, "Cancelled": 1, "Booked": 0, "Full":0 }
]数组中的每一项都可以通过值ID进行标识,并与我上次提取数据时的相应项进行比较。如果其他字段(参与者、已预订、已满、时间)存在差异,我希望以某种方式存储差异,以便清楚哪些字段发生了更改。这种数据更改可以有自己的模式,其中每个元素也可以通过ID标记进行标识。例如,如果"Class1“的Time和Booked已经更改,那么它将作为一个项目数组出现在diff中,其中以前的数据在was中,新数据在is中。
[
{"ID": "155e5acc-aaa7e-2872ade", "ChangedData" : [
{"Field": "Time", "Was" : "2020-10-15 08:15:00", "Is": "2020-10-15 09:15:00" },
{"Field" : "Booked", "Was": 0, "Is" : 1} ]},
]我在这里的实际问题是:有没有最佳实践或类似的东西?我知道我想要什么,但不确定如何才能达到目标。此时,我只需要提取数据,将其保存到磁盘上,下次再次加载它,将其与新数据进行比较,然后迭代两个数组中的每个项,比较ID和每个数据元素。但是,可能已经有了用于此类任务的现有json包。提前谢谢你!
发布于 2020-10-12 15:01:08
我认为dictdiffer可能会帮助您检查差异。下面是一个简单的官方示例:
>>> list(diff({'fruits': []}, {'fruits': ['apple', 'mango']}, expand=True))
[('add', 'fruits', [(0, 'apple')]), ('add', 'fruits', [(1, 'mango')])]https://stackoverflow.com/questions/64312943
复制相似问题