比较JSON文档

5 投票
1 回答
2159 浏览
提问于 2025-04-16 00:28

好吧,我的问题有点复杂,但我还是试试:

我有一个用Python写的服务器,它负责存储客户端(用JavaScript写)的会话,并且完全知道客户端当前存储了什么数据。

服务器会不断从数据库中获取数据,并检查这些数据与客户端的状态是否有变化。这些数据是JSON格式的,主要由列表和字典组成。我需要一种方法,向客户端发送响应,告诉它要修改自己的数据,以便与服务器的数据保持一致。

我考虑过以下几种方法:

  • 发送一个经过JSON序列化的、递归比较后的字典,里面包含了变化的元素,并且不使用列表——这个方法还不错,但我不能用列表。
  • 把服务器上客户端状态的整个版本发送给客户端——这样做成本高且效率低。
  • 找一种复杂的方法来比较列表——这太麻烦了。
  • 把两个状态转成JSON后进行文本比较——这简直太傻了。

我对此感到很困惑,希望能得到一些帮助。

更新

我在考虑向客户端发送空值,以便移除那些服务器已经从客户端状态中删除的数据。

1 个回答

3

相关问题

请查看

这里有几种可能的方法:

  1. 进行实际的树形解析递归差异比较;
  2. 将你的JSON更新封装起来,这样它们可以同时生成差异;
  3. 直接从你的数据中生成仅包含变化的JSON。

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

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

更新请求的频率是多少?

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

为什么不能使用列表?

你可以只存储一个最后已知的客户端状态时间戳,然后查询数据库中自那时以来发生变化的项目——实际上,让数据库为你做差异比较。这需要在每个表项上有一个最后更改时间戳和一个项目删除标志;而不是直接删除项目,设置项目删除标志,并有一个清理查询,删除所有在两个完整更新周期之前设置了项目删除标志的记录。

查看一些示例数据可能会很有帮助——两组JSON客户端状态数据及其之间的差异。

撰写回答