2009-08-28 4 views
0

내 웹 응용 프로그램에서 자바 스크립트로 작성된 복잡한 객체 (예 : 중첩 배열, 객체 내에 객체가있는 객체 등)가 있으며 응용 프로그램의 특성에 따라 다릅니다. 모든 데이터를 PHP로 보내야 데이터베이스에 저장할 수 있습니다. 내 객체를 PHP로 효율적이고 간편하게 보내는 방법은 무엇입니까? JSON을 시도했지만 '너무 많은 재귀'와 같은 이상한 오류가 발생했습니다. 이는 내 객체가 너무 복잡하다는 것을 의미합니다. 이렇게 할 수있는 훌륭한 스크립트 라이브러리가 있습니까? 미리 감사드립니다.Ajax를 사용하여 복잡한 객체를 보내는 좋은 방법은 무엇입니까?

편집 :

그럼 JSON. JSON 라이브러리를 쓸모 없게 업데이트하려고 시도했지만 현재 순환 참조를 찾고 있습니다.

+0

개체가 주기적입니까, 그렇지 않으면 나무가 아닌가요? 예 : A = [B, C], B = [D], C = [D], D = []. JSON은 트리 인 객체 만 나타낼 수 있습니다. – Managu

+0

은주기 찾기가 쉬운 방법입니까, 아니면 수동으로해야합니까? 나는 수동으로 추측하고있다, 그렇지? – Dan

+0

http://en.wikipedia.org/wiki/Cycle_detection – Breton

답변

2

개체에 순환 참조가있는 경우 거의 모든 JSON 라이브러리에서 너무 많은 재귀 오류가 발생합니다. 내가 시도한 자바 스크립트 구현의 재귀 한계는 ~ 100 레벨을 훨씬 초과하므로 오브젝트는 이되어야합니다. 실제로는이 복잡합니다.

모든 종류의 라이브러리를 사용하여 개체를 serialize하기 전에 순환 참조를 감지하고 제거해야합니다.

편집 : 그냥 파이어 폭스 3.5를 테스트하고 재귀의 3000 레벨에서 최고입니다.

5

JSON 정답입니다.

JSON 라이브러리가 손상되었거나 너무 제한적이라고 생각됩니다. JSON이 올바른 형식인지 확인하고, 그렇다면 데이터 구조를 처리 할 수있는 더 나은 라이브러리를 찾으십시오.

또한 데이터 구조를 단순화하는 것도 고려하십시오. 그것은 당신 자신의 이익을 위해 너무 복잡 할 수 있습니다.

1

동의합니다. JSON이 답입니다. 나는

http://markmail.org/message/2d5lvmdeg2qg55qr

같은 오류 멘션 ... 당신이 발생한 오류가 사용하고있는 라이브러리의 일부가 될 수있다 생각합니다.

많은 복잡한 JSON 개체를 사용했지만 그 오류가 발생하지 않았습니다. 뭔가 다른 것이 있다고 말하고 싶습니다.

+0

나는 당신의 연결이 말한 것을 시도했다, 나는 아직도 동일한 과오를, 미안해 얻었다. – Dan

+0

오류의 원인이되는 데이터 샘플을 게시 할 수 있습니까? 유효성 검사기를 통해 데이터를 실행하여 플래그가 있는지 여부를 확인할 수도 있습니다. http://www.jsonlint.com/ –

관련 문제