serdeの対応形式をみて発見。JSONの拡張らしい。
JSON5
JSON5
は、JSON
から拡張された仕様。
特徴
- オブジェクト
- キーは引用符があっても無くてもいい
{'k1':1, "K2":2, k3:3}
- 末尾にカンマを付与していい
{a:1, b:2, }
- キーは引用符があっても無くてもいい
- 配列
- 末尾にカンマを付与していい
[1,2,]
- 末尾にカンマを付与していい
- 文字列
- 数値
- 16進数可
0xFF
- 先頭または末尾の小数点可
.1
,2.
- IEEE 754における正の無限大
Infinity
、負の無限大-Infinity
、およびNaN
可 - 数字は明示的なプラス記号
+
で始めることができる
- 16進数可
- コメント
- 単一行および複数行のコメントが許可される
//
,/*<改行>*/
- 単一行および複数行のコメントが許可される
- ホワイトスペース
- 使える空白文字が増えた
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、はじめて知った。いつからあったんだろう。パーサ等がどのくらい対応しているのか気になるところ。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- rustc 1.36.0 (a53f9df32 2019-07-03)
- cargo 1.36.0 (c4fcfb725 2019-05-15)
$ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
前回まで
- Rust学習まとめ(ドキュメント)
- Rust自習(じゃんけんゲーム1)
- Rust自習(双方向リスト1)
- Rust自習(単方向リスト1)
- Rust自習(単方向リスト2)
- Rust自習(単方向リスト3)
- Rust自習(単方向リスト4)
- Rust自習(単方向リスト5)
- Rust自習(単方向リスト6)
- Rust自習(単方向リスト7)
- Rust自習(リストのインタフェースを考える)
- Rust自習(連結リスト1)
- Rust自習(連結リスト2)
- Rust自習(連結リスト3)
- Rust自習(連結リスト4)
- Rust自習(連結リストの取得系インタフェース考察)
- Rust自習(連結リスト5)
- Rust自習(連結リストの取得系インタフェース考察2)
- Rust自習(連結リスト6)
- Rust自習(連結リスト7)
- Rust自習(連結リスト8)
- Rust自習(連結リスト9)
- Rust自習(変数名でイテレートする方法)
- Rust自習(iter、iter_mut実装方法)
- Rust自習(連結リスト10)
- Rust自習(rev()実装できず)
- Rust自習(cycle()実装できず)
- Rust自習(じゃんけんゲーム2)
- Rust自習(じゃんけんゲーム3)
- Rust自習(じゃんけんゲーム4)
- Rust自習(じゃんけんゲーム5)
- Rust自習(じゃんけんゲーム6)
- Rust自習(じゃんけんゲーム7)
- Rust自習(じゃんけんゲーム8)
- Rustのアップデート(rustup update)
- Rust自習(SQLite3 1)
- Rust自習(SQLite3 2)
- Rust自習(SQLite3 3)
- Rust自習(日時 1 chrono)
- Rust自習(日時 2 chrono)
- Rust自習(日時 3 chrono)
- Rust自習(日時 4 chrono)
- Rust自習(日時 5 chrono)
- Rust自習(日時 6 chrono)
- Rust自習(日時 7 chrono)
- Rust自習(std::time::SystemTime)
- Rust自習(std::time::Instant)
- Rust自習(std::time::Duration)
- Rust自習(シリアライズ serde 1)