2010-07-15 4 views
1

문제점이 있습니다. 이전 버전의 시스템을 새로운 버전으로 변환하는 중입니다. 이전 버전에서는 데이터 요청이 Java 애플릿에 의해 관리되었습니다. "데이터에있는"문자에는 아무런 문제가 없습니다. 이제 데이터베이스에서 데이터를 가져 와서 XSLT를 사용하여 JSON 문자열로 변환 한 다음 프로토 타입 함수 .evalJSON()을 사용하여 문자열을 객체로 만듭니다. XSL은이 (예를 들어)와 같은 데이터 구조 : 그 자체에서 OK 인Javascript : Escape "from json string

{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy" } ] } ] } 

한다. 이제 "-characters을 포함하는 데이터베이스의 일부 데이터가있을 때이 같은 일반적으로 잘 포맷 된 JSON 문자열을 파괴하기 때문에,의 evalJSON()가 실패 :

이제
{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy "more" zzz" } ] } ] } 

, 내가하고 싶은 일을하기 위해, 어떻게 든 원하지 않는 "- 차를 피할 수 있습니다. 저장 프로 시저를 만들 필요없이 서버 측에서 사용할 수 있습니다. RegEx에서 머리를 감싸려고했지만 그 영역에서는 경험이별로 없으므로 알아 내기가 힘듭니다.

가 도움이 있다면, 합법적 확신 문자 시퀀스는 다음과 같습니다 [ ""] 및 [ ","] 및 나타날 가능성이 있으며, 이스케이프해야 순서는 다음과 같습니다 [\ s "], ["\ s], [ ",], [".] (\ s는 공백을 나타냄)

모든 종류의 도움이라면 모든 종류의 도움을받을 수 있습니다. 쉽게 :)

미리 감사드립니다!

+0

변환에 유효한 JSON! –

+0

데이터베이스에서 가져온 데이터 집합에 "문자"가없는 한 매우 유효한 JSON입니다. 이러한 문자는 evalJSON() 함수를 사용하기 전에 정규 표현식 등을 사용하여 이스케이프해야하는 문자입니다. –

답변

0

내 XSL에서 "javascript"함수에 JSON을 반환하기 전에 "-characters with \"를 바꾸기 위해 문자열 바꾸기 템플릿을 사용하여 클라이언트 측에서 아무 것도 이스케이프하지 않아도되는 바로 가기를 작성했습니다.

(사용 : http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx)

1

XSLT를 사용중인 경우 바퀴를 새롭게 단장하고 있습니다. 구글은 "badgerfish"를 올리고 매우 확고한 구현을 위해서는 here을 보아라. 당연히 방해가되는 다른 문제가있을 수 있지만, 우선 가장 먼저해야 할 일이 있습니다.

+0

당신이 내게 준 링크는 내가 지금 사용하고있는 XSLT처럼 데이터를 출력 할 것임을 알 수있다. (예 : site : { "alice": { "bob": [{ "$" : "charlie"}, { "$": "david"}]}}) - ""문자를 사용하지 않는 한 ""문자를 사용하여 데이터를 분리 할 수 ​​있습니다. –

+0

@freaktm : 아니요, xslt에는 콘텐츠 (예 : "-> \")가 대체됩니다. 시도 해봐. – annakata