2011-02-02 2 views
2

저는 JSON 웹 서비스를 가지고 있으며 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가 그것을 추가 했더라도? 나는 리눅스에 있지만 나는 이것을 해보려고 할 때 다른 사람들을 망쳐 놓을 해킹에 의존하고 싶지 않다.

나는 성능을 해칠 것이라고 생각하기 때문에 문자열 변환 후에 정규 표현식을 사용하여 결과를 munge하지 않아도됩니다. 재귀 적으로 트리의 모든 객체에서 'delete jso .__ gwt_ObjectId'를 호출하는 것과 동일합니다. :-(

답변

2

음을 위해 지금이 사물이 작동한다 :

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

(. 그것은 브라우저에서 사용 및 지원의에 더 많은 정보를 제공 할 수있는 경우이 답변으로 응답 자유롭게)

+0

을 우리 (크롬과 파이어 폭스에서만) 같은 문제가 발생하여 문제가 해결되었다. 고마워. – GreenKiwi

관련 문제