GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Parsing-JSON.html ・ emacs-doc.conao3.com

33.31 JSON値のパースと生成

EmacsのJSON(JavaScript Object Notation)サポートでは、LispオブジェクトとJSON値を相互に変換するための関数がいくつか提供されています。任意のJSON値はLispオブジェクトに変換できますが、その逆はできません。具体的には以下の通りです:

なお、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にシリアライズ可能です。同様に、パース関数は前述のいずれの型も返します。

関数: json-serialize object &rest args

この関数は、object の JSON 表現を含む新しい Lisp ユニバイト文字列を返します。引数 args はキーワードと引数のペアのリストです。以下のキーワードが指定可能です:

:null-object

JSONキーワード null を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :null が使用されます。

:false-object

JSONキーワード false を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :false が使用されます。

関数: json-insert object &rest args

この関数は、ポイント直前の現在のバッファに object の JSON 表現を挿入します。引数 args は json-serialize と同様に解釈されます。

関数: json-parse-string string &rest args

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

JSONキーワード null を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :null が使用されます。

:false-object

JSONキーワード false を表現するためにどのLispオブジェクトを使用するかは、この値によって決まります。デフォルトではシンボル :false が使用されます。

関数: json-parse-buffer &rest args

この関数は、point を起点として、現在のバッファから次の JSON 値を読み込みます。contains に有効な JSON オブジェクトが含まれている場合は、point をその値の直後の位置に移動します。そうでない場合は、json-parse-error エラーを発生させ、point は移動しません。引数 args は json-parse-string と同様に解釈されます。