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 / JIS X 3061:2021
情報交換用では文字コード utf-8 でBOM禁止
RFC 7493 The I-JSON Message Format
utf-8
数値はBinary64の範囲、それ以外は文字列として処理
Objectのエスケープ後重複した名前を持つメンバーを禁止
バイナリはBASE64URLで符号化
RFC 3339 日付フォーマット
RFC 7396 JSON Merge Patch
RFC 7159 (旧)
RFC 6902 JSON Patch
RFC 6901 JSON Pointer
RFC 7464 JSON Text Sequence
型
基本型
null
boolean ( true, false )
数値 double で扱える範囲で互換性があると想定しているがそれ以上でも使える
整数型
浮動小数点型 NaN, Infinity は未対応
文字列 ( Unicode )
配列 Arrays
構造体 Object
など
数値型が少ない
バイナリ、日付などの形式は持たない (アプリケーション依存)
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を拡張した形。
類似のものにYAML, CBOR, ASN.1などがある
RPC
JSON-RPC