アプリ版:「スタンプのみでお礼する」機能のリリースについて

ajaxでjsonを取得して、$.parseJSON(ajaxReq.responseText);

でパースさせようとしているのですが、
どうしてもエラーになります。

JSONの書き方の問題らしいので色々試したところ、改行を消すとシンタックスエラーも消えました。
複雑に入れ子になったJSONファイルなので改行がないとわけがわかりません。
なのでそのままの形でパースしたいのですが何か良い方法はないのでしょうか?

A 回答 (4件)

#2です。


本題からずれてしまうのかも知れませんが、

>eval以外に変換する方法があるんでしょうか。
パーサをスクリプトで作成してしまえば可能かと…

すでにあるのではないかと探してみたら、やはりあるみたいです。
(内容は確認していません)
https://github.com/douglascrockford/JSON-js
http://code.google.com/p/json-sans-eval/
    • good
    • 0

JSON は改行(CRLF)を認めてるはずなんですが、現象を再現できるコードを掲示できるでしょうか?


文字列リテラルで改行できないのは通常の JavaScript と一緒ですが、エスケープすれば済む話ですよね…。
http://jsfiddle.net/6hvBe/2/
http://es5.github.com/#x15.12.1.1
http://api.jquery.com/jQuery.parseJSON/
    • good
    • 0
この回答へのお礼

http://...../data.json → { JSONファイル}

これをAjaxで取得し、

var data = XMLHttpReqInstance.responseText;
data = $.parseJSON(data);
//ここでparseJSON内のJSON.parseでSyntax...illegal...とのエラー

こんな形です。
JSON内の改行はエンターキーで行っています。
JSLINTでチェックしたところSyntaxには問題ないようです。

下にも書きましたが、改行というよりデータ形式に問題があるのかもしれないです

お礼日時:2011/07/05 15:04

よくわかってませんが…



『textで取得して、スクリプトで改行を削除し、evalでオブジェクトに変換』というのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2011/07/05 14:56

何かAjaxに置けるJSONファイルの扱いの仕様みたいです。



http://www.support-you.com/wiki/ajax/Ajax%2F999) …

どうしても人に優しいJSONで行きたいのなら、JavaScript(jQuery)とかでやるとか??
    • good
    • 0
この回答へのお礼

ありがとうございます。

皆様のコメントを参考にしつつあれこれいじくった結果、どうやら改行というより
AjaxのXMLHttpRequest.responseTextをそのまま$.parseJSONでパースしようとしていることが原因のようでした。

改行文字がだめというのはエンターキーで改行したものも含むんですかね。
そのあたりが疑問です。

お礼日時:2011/07/05 14:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!