• 締切済み

JSONパース時に改行があるとエラーに

ajaxでjsonを取得して、$.parseJSON(ajaxReq.responseText); でパースさせようとしているのですが、 どうしてもエラーになります。 JSONの書き方の問題らしいので色々試したところ、改行を消すとシンタックスエラーも消えました。 複雑に入れ子になったJSONファイルなので改行がないとわけがわかりません。 なのでそのままの形でパースしたいのですが何か良い方法はないのでしょうか?

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

#2です。 本題からずれてしまうのかも知れませんが、 >eval以外に変換する方法があるんでしょうか。 パーサをスクリプトで作成してしまえば可能かと… すでにあるのではないかと探してみたら、やはりあるみたいです。 (内容は確認していません) https://github.com/douglascrockford/JSON-js http://code.google.com/p/json-sans-eval/

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

JSON は改行(CRLF)を認めてるはずなんですが、現象を再現できるコードを掲示できるでしょうか? 文字列リテラルで改行できないのは通常の JavaScript と一緒ですが、エスケープすれば済む話ですよね…。 http://jsfiddle.net/6hvBe/2/ http://es5.github.com/#x15.12.1.1 http://api.jquery.com/jQuery.parseJSON/

neglectiii
質問者

お礼

http://...../data.json → { JSONファイル} これをAjaxで取得し、 var data = XMLHttpReqInstance.responseText; data = $.parseJSON(data); //ここでparseJSON内のJSON.parseでSyntax...illegal...とのエラー こんな形です。 JSON内の改行はエンターキーで行っています。 JSLINTでチェックしたところSyntaxには問題ないようです。 下にも書きましたが、改行というよりデータ形式に問題があるのかもしれないです

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

よくわかってませんが… 『textで取得して、スクリプトで改行を削除し、evalでオブジェクトに変換』というのでは?

neglectiii
質問者

お礼

ありがとうございます。 確かにevalで変換するとできますが、evalにはセキュリティ上欠陥があるので避けたいんですよね。 改行をreplace((new RegExp("改行","g")),"");で削除してみてもだめでした。 下にも書いたんですが、text形式だからダメだったんですかね。 eval以外に変換する方法があるんでしょうか。

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.1

何か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)とかでやるとか??

neglectiii
質問者

お礼

ありがとうございます。 皆様のコメントを参考にしつつあれこれいじくった結果、どうやら改行というより AjaxのXMLHttpRequest.responseTextをそのまま$.parseJSONでパースしようとしていることが原因のようでした。 改行文字がだめというのはエンターキーで改行したものも含むんですかね。 そのあたりが疑問です。

関連するQ&A