EmacsのJSON(JavaScript Object Notation)サポートでは、LispオブジェクトとJSON値を相互に変換するための関数がいくつか提供されています。任意のJSON値はLispオブジェクトに変換できますが、その逆はできません。具体的には以下の通りです:
true、null、falseの3つのキーワードを使用します。trueは記号tで表されます。デフォルトでは、残りの2つはそれぞれ記号:nullと:falseで表されます。
assqの挙動に従い、シリアライズには最初の要素のみを使用します。
なお、nilは有効なalistであると同時に有効なplistでもあるため、空のJSONオブジェクトである{}を表します。nullやfalse、あるいは空の配列を表すわけではなく、これらはすべて異なるJSON値となります。
Lispオブジェクトの一部がJSONで表現できない場合、シリアライゼーション関数はwrong-type-argument型のエラーを通知します。また、パース関数は以下のエラーを通知することもあります:
json-unavailableパースライブラリが利用できない場合に通知されます。
json-end-of-file入力テキストの早期終了を検知した際に通知されます。
json-trailing-content最初のJSONオブジェクトをパースした後、予期しない入力を検出した際に通知される。
json-parse-error無効なJSON構文を検出した際に通知されます。
トップレベルの値およびそれらに含まれるサブオブジェクトは、JSONにシリアライズ可能です。同様に、パース関数は前述のいずれの型も返します。
この関数は、object の JSON 表現を含む新しい Lisp ユニバイト文字列を返します。引数 args はキーワードと引数のペアのリストです。以下のキーワードが指定可能です:
:null-objectJSONキーワード null
を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :null が使用されます。
:false-objectJSONキーワード false
を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :false が使用されます。
この関数は、ポイント直前の現在のバッファに object の JSON 表現を挿入します。引数 args は json-serialize
と同様に解釈されます。
この関数は、Lisp文字列である必要がある string 内の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-objectJSONキーワード null
を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :null が使用されます。
:false-objectJSONキーワード false
を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :false が使用されます。
この関数は、point を起点として、現在のバッファから次の JSON 値を読み込みます。contains に有効な JSON
オブジェクトが含まれている場合は、point をその値の直後の位置に移動します。そうでない場合は、json-parse-error エラーを発生させ、point は移動しません。引数 args は json-parse-string
と同様に解釈されます。