比较 JSON 文档

Rob*_*Rob 5 python diff json

嗯,我的问题有点复杂,但这里是:

我有一个 Python 服务器,用于存储客户端(用 JavaScript 编写)会话,并且完全了解客户端当前在其状态中存储的内容。

服务器将不断从数据库中获取数据并检查客户端状态的任何更改。数据为JSON;主要由列表和字典组成。我需要一种方法来向客户端发送响应,告诉它更改其数据以匹配服务器的数据。

我考虑过:

  • 发送已更改元素的 JSON 序列化递归差异字典并且不使用列表 - 不错,但我不能使用列表
  • 将客户端状态的整个服务器版本发送给客户端 - 成本高昂且效率低下
  • 找到一些复杂的方法来区分列表 - 痛苦且混乱
  • 转储为 JSON 后两者基于文本的差异 - 简直愚蠢

我对此感到非常困惑,如果有任何帮助,我将不胜感激。

更新

我正在考虑向客户端发送空值以删除不再需要的数据,并且服务器已从其客户端状态版本中删除数据。

Hug*_*ell 3

相关问题

有几种可能的方法:

  1. 进行实际的树解析递归比较;
  2. 封装您的 JSON 更新,以便它们同时生成差异;
  3. 直接从您的数据生成仅更改的 JSON。

您期望的客户端状态 JSON 的平均大小和最大大小是多少?

您预期差异更新的平均大小和最大大小是多少?

多久请求一次更新?

基础数据变化的速度有多快?

为什么不能使用列表?

您可以只存储最后一个已知的客户端状态时间戳,并查询数据库以查找自那时以来已更改的项目 - 实际上,让数据库为您进行比较。这需要每个表项上有最后更改的时间戳和项删除标志;不要直接删除项目,而是设置项目删除标志,并使用清理查询来删除两个以上完整更新周期之前设置了项目删除标志的所有记录。

查看一些示例数据可能会有所帮助 - 两组 JSON 客户端状态数据以及它们之间的差异。