とほほのJSON5入門

目次

JSONL5とは

仕様

下記で仕様が公開されています。

詳細

コメント

// から行末まで、または /* から */ の間をコメントとして無視します。

{
  "name": "Yamada",    // 名前
  "age": 36            /* 年齢 */
}

シングルクォーテーション(')

キーや文字列をダブルクォーテーション("...")の代わりにシングルクォーテーション('...')で囲むことができます。

{ 'name': 'Yamada', 'age': 36 }

キーはクォーテーション不要

キーが JavaScript の識別子として使用できるものであれば、キーをクォーテーションで囲む必要はありません。

{ name: "Yamada", age: 36 }

キーがハイフン(-)を含んだりする場合はクォーテーションが必要です。

{ user-name: "Yamada", age: 36 }    // ERROR

ケンカンマが許される

オブジェクトや配列の最後の値の後にカンマ(,)を記述することが許されます。

{
  "name": "Yamada",
  "age": 36,
}
{
  "colors": [
    "Red",
    "Green",
    "Blue",
  ]
}

文字列途中で改行できる

文字列の途中でもバックスラッシュ(\)を用いて改行することができます。バックスラッシュの後の改行は無視されます。

{
  "message": "ERROR: \
File is not found."
}

エスケープシーケンスが使える

\x41 などのようなエスケープシーケンスを使用できます。

{ "message": "\x41" }

16進数数値を記述できる

0x を用いた16進数の数値を記述できます。

{ "number": 0x125F }

小数点数の先頭や末尾がピリオドでもよい

小数点数のピリオド(.)を先頭や末尾に記述できます。

{ "point1": .23, "point2": 34. }

正数のプラス記号を記述できる

正の数にプラス(+)記号をつけることができます。

{ "number": +123 }

無限大(Infinity)や非数値(NaN)を指定できる

数値として無限大(Infinity) や 非数値(NaN) を記述できます。

{ "number1": Infinity, "number2": NaN }

ライブラリ

Python

json5 モジュールが使用できます。

pip3 install json5
import json5

data = json5.loads(json5_text)

Node.js

json5 モジュールが使用できます。

npm install json5
const JSON5 = require('json5')

JSON5.parse(json5_text)