好吧,我的問題有點複雜,但這裏有雲:版本比較JSON文檔
我有一個存儲客戶端(JavaScript編寫的)會話一個Python服務器,並具有客戶端當前已存儲了什麼完整的知識在它的狀態。
服務器將不斷地從數據庫中獲取數據,並檢查是否有針對客戶端的狀態進行任何更改。數據是JSON;主要由名單和字典組成。我需要一種方式向客戶端發送響應,告訴它改變其數據以匹配服務器的數據。
我已經考慮:
- 發送更改的元素和 沒有使用過名單的JSON序列化遞歸 顯示差異字典 - 不壞,但我 不能用鏈表
- 發送整個客戶端狀態到客戶端的服務器版本 - 昂貴和低效
- 尋找一些令人費解的方式diff的名單 - 痛苦和混亂的
- 基於文本的差異這兩個傾銷後作爲JSON - 平原愚蠢
我很難住這個,我很感激任何幫助。
UPDATE
我考慮派遣零點到客戶端刪除不再需要的數據和服務器已經從它的版本客戶端狀態的去除。
碰巧,我和早上一個人對彼此都不太好 - 出於某種原因,我當時認爲列表無序。現在我已經擺脫了這種奇怪的,奇怪的思維,我可以更清楚地思考一切。 – Rob 2010-06-26 23:32:45
列表是按順序排列的,但對象Keys不是,這使得純粹使用文本差異的想法出現皺摺,將一個json字符串與另一個json字符串進行比較。但是,如果按鍵總是被排序,則應該使用簡單的文本差異。服務器將不得不保留客戶端發送的實際文本進行比較。這取決於您是希望客戶端「知道」哪些字段發生了變化,或者您是否只想用盡可能短的消息將客戶端更新爲新狀態。文本差異會實現一條短消息,但不會通知客戶端哪些字段已更改。 – 2011-08-17 21:25:53