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


33.29 JSON値の解析と生成

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

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

Function: json-available-p

この述語はJSONサポート付きでEmacsがビルドされていて、そのライブラリーがカレントシステムで利用可能なら非nilをリターンする。

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

json-unavailable

パース用ライブラリーが利用できない際にシグナルされる。

json-end-of-file

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

json-trailing-content

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

json-parse-error

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

トップレベルの値、およびそれらトップレベル値のサブオブジェクトをJSONにシリアライズできます。同様にパース関数は上述の利用可能なタイプをリターンします。

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