区分JSON文档

时间:2010-06-26 11:08:53

标签: python json diff

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

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

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

我考虑过:

  • 递归发送JSON序列化 变化的元素和 没有使用过清单 - 不错,但我 不能使用列表
  • 将客户端状态的整个服务器版本发送给客户端 - 昂贵且效率低下
  • 找出一些令人费解的差异列表方式 - 痛苦和凌乱
  • 转储为JSON后的两个基于文本的差异 - 简单愚蠢

我对此感到非常难过,我对此表示感谢。

更新

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

1 个答案:

答案 0 :(得分:3)

相关问题

有几种可能的方法:

  1. 做一个实际的树解析递归diff;
  2. 封装您的JSON更新,以便它们同时生成差异;
  3. 直接从您的数据生成仅限更改的JSON。
  4. 客户端状态JSON的预期平均值和最大值是多少?

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

    请求更新的频率是多少?

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

    为什么不能使用列表?

    您可以只存储最后一个已知的客户端状态时间戳,并在数据库中查询自那时以来已更改的项目 - 实际上,让数据库为您执行差异操作。这将需要在每个表项上最后更改的时间戳和项删除标志;而不是直接删除项目,设置项目删除标志,并有一个清理查询删除所有记录,其中项目删除标志设置超过两个完整更新周期前。

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