post()を介してJSONオブジェクトをポーリングするスクリプトです。私がしたいのは、ちょうどポーリングされたオブジェクトを取り出し、それを保存されたものと比較することです。どこから変更があっても、それが格納されたオブジェクトに適用されるか、または置き換えられる(いずれかの方法)が、私はUIの観点からJSONオブジェクトの変更をシームレスに適用します。2.私はこれをしたいと思っています。私は2つのオブジェクトの間に違いがある場合は、その違いに固有のUIを編集する関数を呼び出すことができます。ようなものが必要です。源あなたが間違っている、あなたはサーバーから同様のオブジェクトを送信しないで、クライアント側で手動で違いを見つける。差異を送信するにはのみする必要があります。帯域幅と計算時間を節約できます。Diffは基本的に私が達成しようとしていることです。今では、自分のニーズに適用するのと同じロジックやアルゴリズムをどのように実現するかを理解するだけです。私が取り組んでいる作品のサーバー側のスペクトラムを支配していれば素晴らしいだろう。残念なことに、私はネットワーク上のさまざまな情報源からこのデータを引き出して、彼らが私に働きかけてくれた缶詰機能を教えてくれました。私の手が縛られているか、私はこれと違った方法で接近してきたでしょう。答え私がしたいのは、ちょうどポーリングされたオブジェクトを取り出し、それを保存されたものと比較することです。どこから変更があった場合は、保存されたオブジェクトに適用するか、それを置き換えます(いずれかの方法で)本当にシンプルな「どのように変更されましたか?はい/いいえ」解決策があれば、変更された場合は前のオブジェクトを新しいオブジェクトに置き換えます(引用した部分に基づいて)それを解析する前にJSONレスポンスを保存することができます。ウェブサーバーが送信する文字列形式で保存します。次に、次の応答が来たら、新しい文字列と古い文字列を比較します。それらが異なる場合(または最初のリクエストの場合)、JSONを解析し、適切に表示するために処理します。これは、サーバー側のコードがJSON文字列を一貫した形式(プロパティの順序を変更しないなど)で作成していることを前提としています。isEqual(a、b)関数は実際にネストされたオブジェクトや配列などのプロパティに対処する必要があります。getDifferences(a、b)関数は、ネストされたオブジェクト内の違いをどのように報告するかを混乱させるでしょう。以下の簡単な例を考えてみましょう。あなたはどのように削除を指示しますか?それは私があなたがその違いをどのように扱いたいと思うかわからない、頭の上の最初の例です。すばやく悪化する可能性があります。diff;}ネストされたオブジェクトを許可するための上記の最も単純な変更は、プロパティがオブジェクト/配列である場合、それがどのように異なっているかだけを気にして、どの「サブプロパティ」が変更されたかを正確に報告することはない。(!isEqual(oldObj[k],newObj[k]))isEqual()は、ウェブ上に浮かぶ多数の比較関数の1つです。私はこのexplinationを好きです。私は現在、新しいテスト環境を構築中です。私はこれに亀裂を与え、自分の必要に合わせて何ができるのかを見ていきたいと思っています。それが私のために動いたかどうかは、後で私の結果と一緒に戻ってくる。Mou源そうですが、私が思い出したことは、変化を検出し、その違いを判断することでした。私は正直なところ、4年前のようなものが何であったかを覚えていませんが、これについてコメントするには、文字通り同じかどうかは分かりません。アイデアのレベル大文字と小文字は同じですが、それでも大きなオブジェクトでは、これはクライアントに何らかの負担をかける可能性があります。私はリンクダンピングが最近の答えであると聞きました。源@WojciechBednarskiはさらに脇に、彼は平等チェックを望んでいない、彼は2つのオブジェクトの違いを見たいと思う。実際に2つの本質的に同じJSONオブジェクトを比較しようとしていますが、オブジェクトを指定する必要がありますが、プルには多かれ少なかれ含めることができますが、カウントの問題は別の方法で処理できます。私が理解しようとしていることは、相違点を見極めるために相手を比較して、それに応じて見つかった相違を処理するのが妥当であるかどうかです。源Raynos、クリス問題を解決するアプローチが正しいかどうか議論することができます。源それにもかかわらず、これは良い提案であり、したがって+1です。源これは理論的に質問に答えるかもしれませんが、ここで答えの重要な部分を含めることと、リンクを提供することが望ましいでしょう。私はクリスがこれとは違う何かを求めたと信じています。morgancodes源1つの潜在的な解決策は、jQueryの拡張を使用することです。オブジェクトのプロパティが同じであれば、うまくいきます。$.extend({},oldJSON,serverData);次に、古いオブジェクトを保存し、新しいオブジェクトに存在しない場合は古いオブジェクトの任意のプロパティを持つ新しいオブジェクトを作成し、既存のプロパティをサーバーの新しいデータのプロパティで上書きします。bstakes源あなたは彼を誤解した。彼は何が変わったのかを知りたがっています。あなたはそれらをマージしますか?あなたは代わりに新しいものを使うことができます。この答えは質問に全く答えません。それは手元の問題を理解する深い問題を示しています。いいえ、質問から引用された賭けとして、OPは差異があるかどうかを判断し、「保存されたオブジェクトに適用するか、置き換える(いずれかの方法で)」と述べました。私は理想的な解決策が違いを報告することを意味するが、それができない場合(または簡単にできない場合)は、まっすぐの交換が受け入れられる。