Next: JSONRPC, Previous: Parsing HTML/XML, Up: Text [Contents][Index]
JSON (JavaScript Object Notation)のサポートつきでEmacsをコンパイルした場合には、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-end-of-file
入力テキストの早すぎる終端に遭遇した際にシグナルされる。
json-trailing-content
パース済みの最初のJSONオブジェクトの後で予期せぬ入力に遭遇した際にシグナルされる。
json-parse-error
無効なJSON構文に遭遇した際にシグナルされる。
JSONにシリアライズできるのはトップレベルの値(配列およびオブジェクト)だけです。任意のタイプがこれらのトップレベル値のサブオブジェクトになることができます。同様にパース関数はベクター、ハッシュテーブル、alist、plistだけをリターンします。
この関数はobjectのJSON表現を含むLisp文字列を新たにリターンする。引数argsはキーワード/引数のペアからなるリスト。以下のキーワードが可能:
:null-object
値はJSONキーワードのnull
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:null
。
:false-object
値はJSONキーワードのfalse
を表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:false
。
このコマンドはカレントバッファーのポイントの前にobjectのJSON表現を挿入する。引数argsはjson-parse-string
の場合と同様に扱われる。
この関数は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
の場合と同様に解釈される。