6.80. kink/json/JSON

JSON文字列とJSON値の間で変換を行う。JSON値についてはkink/json/JSON_VALモジュールを見よう。

このモジュールは、[RFC 8259]で仕様化されたJSONをサポートする。

[RFC 8259] https://tools.ietf.org/html/rfc8259

6.80.1. JSON.parse(Json ...[$config={}])

parseは、str値Jsonから、JSON値をデコードする。

コンフィグメソッド:

• C.allow_unpaired_surrogates

• C.on_success($success): default = VAL$identity

• C.on_error($error): default = 例外を投げる関数

Jsonが妥当なJSON文字列である場合、parseは、デコードされたJSON値を引数として$successを末尾呼び出しする。

Jsonが妥当なJSON文字列でない場合、parseは、(Msg, Pos)を引数として$errorを末尾呼び出しする。ただし、Msgはエラーメッセージのstr値であり、PosはJson中でエラーが見つかった場所の位置添字である。

数値のScale

結果のJSON値中の数値のScaleは、JSON中の数値を表現できる最小の非負の値に正規化される。例:

対にならないサロゲートコードポイント

デフォルトでparseは、オブジェクトのメンバの名前、および文字列値の中における、対にならないサロゲートコードポイントをエラーとして扱う。そのようなコードポイントが見つかったら、parseは$errorを末尾呼び出しする。

C.allow_unpaired_surrogatesが呼ばれたら、parseは対にならないサロゲートコードポイントを許容する。JSON値がどのように構成されるかは、ランタイム依存である。コードポイントは削除されるかもしれないし、str値中に残るかもしれない。

事前条件

Jsonはstr値でなければならない。

$successはJSON値を取る関数でなければならない。

$errorは(Msg, Pos)を取る関数でなければならない。ただし、Msgはstr値であり、Posは整数のnum値である。

例

6.80.2. JSON.stringify(Json_val ...[$config={}])

stringifyは、Json_valを、JSONのstr値に変換する。

コンフィグメソッド:

• C.pretty(...[Indent = ふたつの空白文字]): pretty-printモードを有効化する。

• C.after_colon(After_colon): default = pretty-printモードのときは空白文字、それ以外は空のstr値。

• C.after_comma(After_comma): default = 空のstr値。

書式

pretty-printモードが有効でないとき、JSONは単一行に出力される。

pretty-printモードが有効なとき、オブジェクトと配列のエントリごとに改行文字が挿入される。エントリは、ひとつのネストごとに、Indentでインデントされる。

オブジェクトのエントリのコロン `:` のあとには、After_colonが挿入される。

pretty-printモードが有効でない場合、オブジェクトと配列のエントリのあとのコンマ `,` のあとには、After_commaが挿入される。

事前条件

Json_valはJSON値でなければならない。

Indentは、空白文字とタブのみからなるstr値でなければならない。

After_colonは、空白文字とタブのみからなるstr値でなければならない。

After_commaは、空白文字とタブのみからなるstr値でなければならない。

例