先日、仕事で扱っているサイトにて、Ajaxで取得したJSONデータが環境によって文字列として取得される問題が発生した。
そのため、ローカル環境では取得したデータをオブジェクトとしてそのまま扱うことができたが、本番環境では文字列に対しobj.name
のようにアクセスしていたためエラーを起こしていた。
そこで施した対策がこちら。
// 変数dataはAjaxで取得したデータ
if(typeof (data) === 'string' || data instanceof String) {
data = JSON.parse(data);
}
if文で取得したデータが文字列かどうかをチェックし、文字列の場合はJSON.parse
を使ってオブジェクトに変換する。
これで今回のような特殊なケースにおいても正常動作できるようになった。