Next: , Previous: , Up: Text   [Contents][Index]


32.29 JSON値の解析と生成

JSON (JavaScript Object Notation)のサポートつきでEmacsをコンパイルした場合には、LispオブジェクトとJSON値との間で変換を行う関数がいくつか提供されます。任意のJSON値をLispオブジェクトに変換できますが、その逆は成り立ちません。具体的には:

alistとplistの両方で有効なnilは、空のJSONオブジェクト{}を表すことに注意してください。nullfalse、空の配列はJSONではすべて異なる値です。

JSONで何らかのLispオブジェクトを表現できなければ、シリアライゼーション関数はタイプwrong-type-argumentのエラーをシグナルします。パース関数も以下のエラーをシグナルする可能性があります:

json-end-of-file

入力テキストの早すぎる終端に遭遇した際にシグナルされる。

json-trailing-content

パース済みの最初のJSONオブジェクトの後で予期せぬ入力に遭遇した際にシグナルされる。

json-parse-error

無効なJSON構文に遭遇した際にシグナルされる。

トップレベルの値(配列とオブジェクト)だけがJSONにシリアライズできます。これらのトップレベル値内のサブオブジェクトは任意のタイプにすることができます。同様にパース関数はベクター、ハッシュテーブル、alist、plistだけをリターンすます。

Function: json-serialize object &rest args

この関数はobjectのJSON表現を含むLisp文字列を新たにリターンする。引数argsはキーワード/引数のペアからなるリスト。以下のキーワードが可能:

:null-object

値はJSONキーワードのnullを表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:null

:false-object

値はJSONキーワードのfalseを表すために使用するLispオブジェクトを決定する。デフォルトはシンボル:false

Function: json-insert object &rest args

このコマンドはカレントバッファーのポイントの前にobjectのJSON表現を挿入する。引数argsjson-parse-stringの場合と同様に扱われる。

Function: json-parse-string string &rest args

この関数は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

Function: json-parse-buffer &rest args

この関数はカレントバッファーのポイント位置の文字列から、次のJSON値を読み取る。値に有効なJSONオブジェクトが含まれていれば値の直後にポイントを移動、それ以外ならjson-parse-errorエラーをシグナルしてポイントは移動しない。引数argsjson-parse-stringの場合と同様に解釈される。