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の場合と同様に解釈される。