2011-09-22 4 views
2

Webサービスから戻ってくるXMLがあります。私は順番にxsonをjsonに変換するためにxsltを使います(私は誰かのxmlサービスをjsonベースのサービスに変えています)。 JSONを出力している私のサービスは、事実上のiphone jsonフレームワーク、SBJSONを使って私のiPhoneアプリケーションで消費されています。Stig JSONライブラリの解析エラー:JSONで新しい行をどのように扱いますか?

問題は、[string JSONValue]メソッドのチョークを使用しているため、改行が原因であることがわかります。私が問題を教えても、それを修正する方法はわかりません。

パーサは、文字列X

の解析に失敗したが、あなたはそれが法的なJSONのですか?このフレームワークは本当に厳格なので、(明らかに)いくつかのバリデーターが受け入れるものは受け入れられません。特に、文字列トークンのリテラルTAB、NEWLINEまたはCARRIAGE RETURN(および他のすべての制御文字)文字は許可されませんが、検出するのは非常に困難です。

以下のようなものがある場合(数値は異なる場合があります)、文字列の1つにUnicode制御文字が許可されていません。

NSLocalizedDescription = "アンエスケープ制御文字 '0x9'";

私は、次のような行を使用して試してみました:NSString *myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];

しかし、それは動作しません。私のXMLサービスはCDATAとして戻っていません。 xmlには、私が知る限り、それに改行が入っています(どうすれば確認できますか)。 JSONに改行を忠実に伝えたいだけです。

私は実際にこれで1日を過ごしました。だから、尋ねる時間です。もう私は自尊心がありません。私はあなたのためのソリューションを持っていないが、私は通常、TouchJSONプロジェクトからCJSONSerializerとCJSONDeserializerを使用して、それはかなり信頼性がある

答えて

-1

たくさん おかげで、私は前に改行して問題を抱えていたことがありません。ちょっとした考え。改行文字が動作するはずエスケープ

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を解析して、アプリケーションが使用できるデータ構造にする方が簡単かどうか疑問に思っています。

関連する問題