JSON
JavaScript Object Notation
https://www.json.org/json-ja.html
JavaScriptのデータ形式を汎用的に使えるようにしたものだったり。データ記述言語などに括られる。
RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format
https://www.asahi-net.or.jp/~ax2s-kmtn/internet/rfc8259j.html
ECMA-404 2nd Edition
ISO/IEC 21778:2017 ISO/IEC JTC 1 SC 22
https://www.iso.org/standard/71616.html
JIS X 3061:2021
情報交換用では文字コード utf-8 でBOM禁止
RFC 7493 The I-JSON Message Format
https://tex2e.github.io/rfc-translater/html/rfc7493.html
utf-8
数値はBinary64の範囲、それ以外は文字列として処理
Objectのエスケープ後重複した名前を持つメンバーを禁止
バイナリはBASE64URLで符号化
RFC 3339 日付フォーマット
RFC 7396 JSON Merge Patch
https://tex2e.github.io/rfc-translater/html/rfc7396.html
RFC 7159 (旧) → 8259
RFC 7158 (旧) → 7159
RFC 6902 JSON Patch
https://tex2e.github.io/rfc-translater/html/rfc6902.html
RFC 6901 JSON Pointer
https://tex2e.github.io/rfc-translater/html/rfc6901.html
RFC 7464 JSON Text Sequence
RFC 4627 The application/json Media Type for JavaScript Object Notation (JSON) → 7159
データ交換には実質 I-JSONの制約を加えたものが使われている
型
基本型
null
boolean ( true, false )
数値 double で扱える範囲で互換性があると想定しているがそれ以上でも使える
整数型 (I-JSONでは上限あり)
浮動小数点型 NaN, Infinity は未対応
文字列 ( Unicode )
配列 Arrays
構造体 Object
など
数値型が少ない
バイナリ、日付などの形式は持たない (アプリケーション依存) I-JSONなどの制約は別途あり
JavaではJSON-P, JSON-BなどによりJSONが利用できる。
XMLが複雑なので代わりにRESTの主要なデータ交換形式として使われていたり。
コメントの拡張などいろいろ提案されているが標準にコメントはない。
JSON Schema で型定義ができたりする。
JSON-LD もある。
JSON系スキーマ記述言語
JSON Schema
RFC 8927 JTD JSON Type Definision
拡張
JSONC コメントが書けるMicrosoftのJSONCは定義が曖昧。
YAML はJSONを拡張した形。
I-JSON 情報交換用制約
類似のものにYAML, CBOR, ASN.1などがある
RPC
JSON-RPC