やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

JSON5とは?

 serdeの対応形式をみて発見。JSONの拡張らしい。

JSON5

 JSON5は、JSONから拡張された仕様。

特徴

  • オブジェクト
    • キーは引用符があっても無くてもいい {'k1':1, "K2":2, k3:3}
    • 末尾にカンマを付与していい {a:1, b:2, }
  • 配列
    • 末尾にカンマを付与していい [1,2,]
  • 文字列
    • 一重引用符も可 'ab', "ab"
    • 改行文字をエスケープして複数行に書ける "a \<改行> b"
    • 文字エスケープ可 "\\n"
  • 数値
    • 16進数可 0xFF
    • 先頭または末尾の小数点可 .1, 2.
    • IEEE 754における正の無限大Infinity、負の無限大-Infinity、およびNaN
    • 数字は明示的なプラス記号+で始めることができる
  • コメント
    • 単一行および複数行のコメントが許可される //, /*<改行>*/
  • ホワイトスペース

JSONとの比較

 JSONと比較して細かいところが助かる。

  • コメントが書ける!
  • 引用符が一重でもOK!
  • 末尾にカンマがあってもOK!

 というか、こんなことすらできないJSONって……。

 文字列の改行ができるようになったのは良い。でも、\\nというエスケープは微妙。

コード例

{
  /*
   * 複数行のコメント
   */
  // comments
  unquoted: 'and you can quote me on that',
  singleQuotes: 'I can use "double quotes" here',
  lineBreaks: "Look, Mom! \
No \\n's!",
  hexadecimal: 0xdecaf,
  leadingDecimalPoint: .8675309, andTrailing: 8675309.,
  positiveSign: +1,
  trailingComma: 'in objects', andIn: ['arrays',],
  "backwardsCompatible": "with JSON",
}

 json5シンタックスハイライトが欲しい。

所感

 JSON5、はじめて知った。いつからあったんだろう。パーサ等がどのくらい対応しているのか気になるところ。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

前回まで