2011-02-02 4 views
2

私はJSON Webサービスを持っています。私はAPIをJavaScriptObjectオーバーレイクラスのツリーとしてモデル化しました。よく働く。 DevModeを除いて、GWTの内部および突き抜けは例外です。DevModeのJSON.stringify(jso)から '__gwt_ObjectId'を除外する

DevModeには、$ wnd.JSON.stringify(jso)がツリー内の各オブジェクトにあるようですが、GWTのdevmodeによって追加された '__gwt_ObjectId'という追加のプロパティがあります。このshoudln'tは、使用しているサービスが非常に選択されているように見えますが、私のリクエストは「無効なパラメータ:__gwt_ObjectId」で死んでいます。

GWTソースからの掘削では、JSON.stringify(jso、replacer)に言及していますが、コメントによるとSafari 4.xでは利用できません。 5はそれを追加しましたが?私はLinuxを使っていますが、これを試してみると他の人たちを酷使するハックに応じて始めたくありません。

私は実際にパフォーマンスを傷つけるだろうと感じるように、文字列化した後に正規表現で結果を突き止める必要がないのが本当に好きです。ツリー内のすべてのオブジェクトに対して 'delete jso .__ gwt_ObjectId'を再帰的に呼び出すのと同じです。 :-(

答えて

2

まあ、今これは物事が動作しますのために:

return $wnd.JSON.stringify(jso, function(key, value) { 
    if (key == '__gwt_ObjectId') { 
    return; 
    } 
    return value; 
}); 

(。あなたはブラウザでそれの使用状況やサポートに関するより詳細な情報を提供できる場合は、この答えで応答すること自由に感じなさい)

+0

我々同じ問題に遭遇しました(ChromeとFirefoxでのみ)、これが私たちの問題を解決しました。 – GreenKiwi

関連する問題