JSONデータに改行コードを入れる方法

こんばんは。最近プログラミングしてないなと反省してますshojiです。
お仕事でJSONデータを作成しているときに、文字列データへ改行コードを入れる方法でちょっと悩んだので、そのメモです。

 

確認した環境

  • Mac版Chrome 60.0.3112.113
  • Mac版Safari 10.1.2

 

やりたかったこと

下記のようにdescriptionというキーで、改行コードが入った文字列データを用意しまして…

JSON.parseメソッドでパースしてJavaScriptオブジェクトに変換後、こんな感じで<PRE>タグへ出力したい。

さぁ、(改行コード)の部分はどう書けば良いでしょう??

 

結論

みなさん正解わかりましたか?

これが正解のようです。

なんでバックスラッシュが2つになるのでしょうか?

 

考え方

JavaScriptとJSONで分けて考えるとわかりやすいようです。

 

下記のコードは、JavaScriptで改行コードを含んだ文字列をコンソール出力するコードです。

実行すると、下記のように出力されます。

JavaScriptでは改行コードを”\n”で表現し、バックスラッシュがエスケープ記号です。これは理解していました。

 

続きまして、下記のコードはJSON文字列としてのバックスラッシュ文字です。

JSONの仕様によると、バックスラッシュを表現するには、バックスラッシュのユニコードエスケープ形式 “\u005c” か、またはJavaScriptと同様にバックスラッシュでエスケープした “\\” となるようです。

 

あわせて考えてみると、まず結論で書いたJSONデータは

ですが、JSON文字列としてのエスケープを考えれば、JavaScript側で受け取る文字列としては

となります。”\n”は改行文字となるので、出力する際に改行され、

と表示されるようです。なるほどですね。。。

 

以上となります。