- 締切済み
JSONパース時に改行があるとエラーに
ajaxでjsonを取得して、$.parseJSON(ajaxReq.responseText); でパースさせようとしているのですが、 どうしてもエラーになります。 JSONの書き方の問題らしいので色々試したところ、改行を消すとシンタックスエラーも消えました。 複雑に入れ子になったJSONファイルなので改行がないとわけがわかりません。 なのでそのままの形でパースしたいのですが何か良い方法はないのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
#2です。 本題からずれてしまうのかも知れませんが、 >eval以外に変換する方法があるんでしょうか。 パーサをスクリプトで作成してしまえば可能かと… すでにあるのではないかと探してみたら、やはりあるみたいです。 (内容は確認していません) https://github.com/douglascrockford/JSON-js http://code.google.com/p/json-sans-eval/
- think49
- ベストアンサー率59% (285/482)
JSON は改行(CRLF)を認めてるはずなんですが、現象を再現できるコードを掲示できるでしょうか? 文字列リテラルで改行できないのは通常の JavaScript と一緒ですが、エスケープすれば済む話ですよね…。 http://jsfiddle.net/6hvBe/2/ http://es5.github.com/#x15.12.1.1 http://api.jquery.com/jQuery.parseJSON/
- fujillin
- ベストアンサー率61% (1594/2576)
よくわかってませんが… 『textで取得して、スクリプトで改行を削除し、evalでオブジェクトに変換』というのでは?
お礼
ありがとうございます。 確かにevalで変換するとできますが、evalにはセキュリティ上欠陥があるので避けたいんですよね。 改行をreplace((new RegExp("改行","g")),"");で削除してみてもだめでした。 下にも書いたんですが、text形式だからダメだったんですかね。 eval以外に変換する方法があるんでしょうか。
- 4017B
- ベストアンサー率73% (1336/1814)
何かAjaxに置けるJSONファイルの扱いの仕様みたいです。 >http://www.support-you.com/wiki/ajax/Ajax%2F999)Javascript%2F500)JSON%2F500)%B2%FE%B9%D4%A5%B3%A1%BC%A5%C9%A4%CE%CC%E4%C2%EA.html どうしても人に優しいJSONで行きたいのなら、JavaScript(jQuery)とかでやるとか??
お礼
ありがとうございます。 皆様のコメントを参考にしつつあれこれいじくった結果、どうやら改行というより AjaxのXMLHttpRequest.responseTextをそのまま$.parseJSONでパースしようとしていることが原因のようでした。 改行文字がだめというのはエンターキーで改行したものも含むんですかね。 そのあたりが疑問です。
お礼
http://...../data.json → { JSONファイル} これをAjaxで取得し、 var data = XMLHttpReqInstance.responseText; data = $.parseJSON(data); //ここでparseJSON内のJSON.parseでSyntax...illegal...とのエラー こんな形です。 JSON内の改行はエンターキーで行っています。 JSLINTでチェックしたところSyntaxには問題ないようです。 下にも書きましたが、改行というよりデータ形式に問題があるのかもしれないです