[Javascript] JSON.parseで'(シングルクォート)を使うとエラーになる件

quote-1375855_1280
LINEで送る
Share on GREE
Share on LinkedIn

今更ながら、JavascriptのJSONエンコードをする時にエラーに悩まされていて、数時間無駄にしたので、ブログに愚痴がてら、メモメモ。
 
とりあえず、現象と原因は、表題の通りなのだが、文字列を囲むのは”(ダブルクォート)と'(シングルクォート)のどちらでもいいというのが、大体のプログラム言語での共通認識だと思っていたのが、ハマった原因。
JSON.parseでJSONフォーマット文字列をエンコードしようとした場合、jsonのkey,valueを囲む記号で'(シングルクォート)を使うと、メチャクチャErrorが出るので要注意という事。

調査

とりあえずググってみると、わんさかハマった人がいました。
JSON.parse シングルクォート | Google

スクリーンショット 2017-05-30 22.30.12

実験

Double-Quotation

まずは、一番のノーマル型であるダブルクォートのみ

問題なく成功

Double-Quotation & Escape

上記が文字列をシングルクォートで囲っているので全てダブルクォートのバージョン

これも問題なし

Single-Quotation

さて、問題のシングルクォートです。

文字列の定義段階では、エラーは出ていないけど、JSON.parse段階で’箇所でエラーです。
ちなみに、ダブルクォートと同じように、全てシングルクォートにしてエスケープ処理をしたバージョンです。

全く同じエラーです。

Value inner ‘(Single-Quotation)

最後は、文字列内にシングルクォートを使う場合

これは成功という事は、囲み記号でのシングルクォートが使用禁止です。

他のメソッドではどう?

Javascriptでプログラムする機会は多いので、他のメソッドでも試して置くことにしました。

console.log

コンソールは問題なさそうです。

alert

スクリーンショット 2017-05-30 22.21.47
キャプチャしておきましたが、問題ないようです。

これからどうする?

とりあえず、ダブルクォートを基準にしておけば、問題なさそうです。
ただし、これはjavascriptのネイティブ記述での仕様なので、他の言語であれば、別のルールがあるかもしれません。
エラーを出してちゃんとテストを行ってリリースすれば、問題はなさそうですが、できれば知識として身につけておきたいルールですね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*