从DevMode中的JSON.stringify(jso)中排除'__gwt_ObjectId'

时间:2011-02-02 09:38:00

标签: gwt

我有一个JSON Web服务,我已经将API建模为JavaScriptObject覆盖类的树。效果很好。除了在DevMode中GWT内部和戳穿。

似乎在DevMode中,对于树中的EACH对象的$ wnd.JSON.stringify(jso),GWT devmode添加了一个名为'__gwt_ObjectId'的附加属性。这个 shoudl不是一个问题,除了我正在使用的服务似乎是非常挑选所以我的请求死于“无效参数:__gwt_ObjectId”。

在挖掘GWT源代码时,我发现提到了JSON.stringify(jso,replacer),但正如评论所说,这不适用于Safari 4.x.虽然有5个加了吗?我在Linux上,但我不想开始依赖于在他们试图解决这个问题时会搞砸其他人的黑客攻击。

我真的不想在字符串化之后用regexp来结果,因为我觉得这可能会影响性能。与在树中的每个对象上递归调用'delete jso .__ gwt_ObjectId'相同。 : - (

1 个答案:

答案 0 :(得分:2)

好吧,现在这让事情有效:

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

(如果您可以在浏览器中提供有关其使用和支持的更多详细信息,请随时回复此答案。)