EmacsのJSONサポート (JavaScript Object Notation)では、LispオブジェクトとJSON値との間で変換を行う関数がいくつか提供されます。任意のJSON値をLispオブジェクトに変換できますが、その逆は成り立ちません。具体的には:
true
、null
、false
という3つのキーワードを使用する。true
はシンボルt
を表す。デフォルトでは残り2つのキーワードはそれぞれシンボル:null
、:false
で表される。
assq
の挙動にしたがいシリアライズに最初の要素だけを使用する。
alistとplistの両方で有効なnil
は、空のJSONオブジェクト{}
を表すことに注意してください。null
やfalse
、空の配列はJSONではすべて異なる値です。
JSONで何らかのLispオブジェクトを表現できなければ、シリアライゼーション関数はタイプwrong-type-argument
のエラーをシグナルします。パース関数も以下のエラーをシグナルする可能性があります:
json-unavailable
パース用ライブラリーが利用できない際にシグナルされる。
json-end-of-file
入力テキストの早すぎる終端に遭遇した際にシグナルされる。
json-trailing-content
パース済みの最初のJSONオブジェクトの後で予期せぬ入力に遭遇した際にシグナルされる。
json-parse-error
無効なJSON構文に遭遇した際にシグナルされる。
トップレベルの値、およびそれらトップレベル値のサブオブジェクトをJSONにシリアライズできます。同様にパース関数は上述の利用可能なタイプをリターンします。
この関数はobjectのJSON表現を含むLispユニバイト文字列を新たにリターンする。引数argsはキーワード/引数のペアからなるリスト。以下のキーワードが可能:
:null-object
値はJSONキーワードのnull
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:null
。
:false-object
値はJSONキーワードのfalse
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:false
。
このコマンドはカレントバッファーのポイントの前にobjectのJSON表現を挿入する。引数argsはjson-serialize
の場合と同様に扱われる。
この関数はstring
(Lisp文字列でなければならない)内のJSON値をパースする。stringに有効なJSONオブジェクトが含まれていなければ、この関数はjson-parse-error
エラーをシグナルする。
引数argsはキーワード/引数のペアのリスト。以下のキーワードが許されている:
:object-type
値はJSONオブジェクトのキーと値のマッピングを表現するために使用するLispオブジェクトを決定する。文字列をキーとするハッシュテーブルhash-table
(デフォルト)、シンボルをキーとするalistを使用するalist
、キーワードシンボルをキーとするplistを使用するplist
のいずれかが可能。
:array-type
値はJSON配列の表現に使用するLispオブジェクトを決定する。Lisp配列を使用するarray
(デフォルト)、またはリストを使用するlist
のいずれかが可能。
:null-object
値はJSONキーワードのnull
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:null
。
:false-object
値はJSONキーワードのfalse
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:false
。
この関数はカレントバッファーのポイント位置の文字列から、次のJSON値を読み取る。値に有効なJSONオブジェクトが含まれていれば値の直後にポイントを移動、それ以外ならjson-parse-error
エラーをシグナルしてポイントは移動しない。引数argsはjson-parse-string
の場合と同様に解釈される。