2011-09-22 2 views
2

웹 서비스에서 돌아 오는 XML이 있습니다. 차례 차례로 xson을 json으로 변환하기 위해 xml을 사용합니다 (다른 사람의 xml 서비스를 json 기반 서비스로 바꾸고 있습니다). JSON을 출력하고있는 내 서비스는 사실상 iphone json 프레임 워크 인 SBJSON을 사용하여 iPhone 응용 프로그램에서 사용합니다.Stig JSON 라이브러리 구문 분석 오류 : JSON에서 새로운 행을 어떻게 수용합니까?

문제는 [string JSONValue] 메소드 초크를 사용하는 것이므로 줄 바꿈으로 인한 것입니다. 보라, 보라, FAQ조차도 나에게 그 문제를 알려주지 만 나는 그것을 고치는 법을 모른다.

파서는

당신이 그것을 법적 JSON 확신 문자열을 있습니까 X 구문 분석하는 데 실패? 이 프레임 워크는 실제로 엄격하기 때문에 (분명히) 여러 유효성 검사자가 허용하는 내용을 허용하지 않습니다. 특히, 문자열 토큰의 리터럴 TAB, NEWLINE 또는 CARRIAGE RETURN (및 다른 모든 제어 문자) 문자는 허용되지 않지만 찾아 내기가 매우 어려울 수 있습니다. (이 문자는 물론 토큰 사이에 사용할 수 있습니다.)

아래와 같이 (숫자는 다를 수 있음) 문자열 중 하나에서 유니 코드 제어 문자가 허용되지 않습니다.

NSLocalizedDescription = "이스케이프 처리되지 않은 제어 문자 '0x9'";

나는 같은 라인을 사용하여 시도했다 : NSString *myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];

하지만 그건 작동하지 않습니다. 내 xml 서비스가 CDATA로 돌아 오지 않습니다. 내가 말할 수있는 한 xml에는 줄 바꿈이 있습니다 (어떻게 확인할 수 있습니까). JSON으로 줄 바꿈을 충실하게 전달하고 싶습니다.

저는 실제로 하루 종일 보냈습니다. 그래서 물어볼 시간입니다. 나는 더 이상 자존심이 없다. 고마워

답변

-1

나는 해결책이 없지만 일반적으로 TouchJSON 프로젝트의 CJSONSerializer와 CJSONDeserializer를 사용하며 이전에는 줄 바꿈에 문제가 없었습니다. 그냥 생각. 새 줄 문자가 작동합니다 이스케이프

http://code.google.com/p/touchcode/source/browse/TouchJSON/Source/JSON/CJSONDeserializer.m?r=6294fcb084a8f174e243a68ccfb7e2c519def219 http://code.google.com/p/touchcode/source/browse/TouchJSON/Source/JSON/CJSONSerializer.m?r=3f52118ae2ff60cc34e31dd36d92610c9dd6c306

+0

"오류 무시"는 좋은 전략이 아닙니다. IMO. 증상을 무시하는 것보다 문제를 다루는 것이 좋습니다. –

0

. 따라서 다음 행은 이상적으로 작동해야합니다. 입력 내용에도 '\ r'문자가 포함되어 있는지 확인하십시오.

 NSString *myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];

당신은 문자 모든 문자 (비 표시 가능한 문자뿐만 아니라)를 표시 지원하는 편집기를 사용하여 문자열의 존재를 제어하는 ​​확인할 수 있습니다. 예 : 메모장 + +를 사용하면 문자열에 포함 된 모든 문자를 볼 수 있습니다.

0

XSLT가 작동하지 않는 것처럼 들리지만 합법적 인 JSON이 생성되지 않습니다. 올바른 형식의 JSON 문자열을 생성하는 것이 결코 쉬운 일은 아니기 때문에 이는 놀랄 일이 아닙니다. 표준 XML 라이브러리를 사용하여 XML을 응용 프로그램에서 사용할 수있는 데이터 구조로 구문 분석하는 것이 더 간단한 지 궁금합니다.