ruby to_json で / をエスケープしたい

投稿者: Anonymous

https://shinkufencer.hateblo.jp/entry/2018/08/03/235900

によると厳密なJSONでは / はエスケープする必要があるみたいなのですが
ruby の to_json はエスケープしてくれません

厳密なJSONにしてくれるオプションのようなのはないんでしょうか

https://docs.ruby-lang.org/ja/latest/class/JSON.html
ここに to_json に関するドキュメントがないんですが
どこを見ればオプションの仕様ってわかるんでしょうか

解決

そのブログ記事がJSON規格を誤解しています。

      string = quotation-mark *char quotation-mark

      char = unescaped /
          escape (
              %x22 /          ; "    quotation mark  U+0022
              %x5C /          ;     reverse solidus U+005C
              %x2F /          ; /    solidus         U+002F
              %x62 /          ; b    backspace       U+0008
              %x66 /          ; f    form feed       U+000C
              %x6E /          ; n    line feed       U+000A
              %x72 /          ; r    carriage return U+000D
              %x74 /          ; t    tab             U+0009
              %x75 4HEXDIG )  ; uXXXX                U+XXXX

      escape = %x5C              ; 

      quotation-mark = %x22      ; "

      unescaped = %x20-21 / %x23-5B / %x5D-10FFFF

/エスケープできるもののリストに入っていますが、unescaped に %x2F も入っているため、エスケープする必要はありません/ と書いてもいいし、/ と書いてもよいのです。

回答者: Anonymous

Leave a Reply

Your email address will not be published.