13.5 JSONの操作
SML#では以下の構文および関数を提供します.
-
•
JSONの読み込み.
Dynamic.fromJson : string -> Dynamic.void Dynamic.dyn
この関数は,JSON文字列を構文解析し,動的部分レコードとして 読み込みます. 構文解析に失敗した場合は Dynamic.RuntimeTypeError例外を発生させます. Dynamic.voidは, 値の構造が一切判明していないことを表します.
-
•
JSONの動的型検査 _dynamic as および 動的型検査を伴うパターンマッチ _dynamiccase式. 13.1節で述べたこれらの式は JSONの検査にもそのまま使えます. には以下の型を書くことができます.
-
–
int,bool,stringなどの基本型, レコード型,リスト型,およびこれらの組み合わせ. JSONデータがが表す構造に一致するときのみ,キャストは 成功します.
-
–
部分動的レコード型 {:, , :} Dynamic.dyn. JSONデータが少なくとも の個のラベルを持ち, 各ラベルの値がにキャストできるとき,キャストは 成功します.
-
–
構造が判明していない型 Dynamic.void Dynamic.dyn. この型へのキャストは常に成功します.
-
–
以上の型を自由にネストさせた組み合わせ.
-
–
-
•
静的なビューの取得.
Dynamic.view : [’a#reify. ’a Dynamic.dyn -> ’a]
この関数は, 与えられたJSONデータのうち,静的に構造が判明している部分のみを MLのデータに変換します. 引数がDynamic.void Dynamic.dyn型のときは Dynamic.RuntimeTypeError例外が発生します.
-
•
JSONプリンタ.
Dynamic.toJson : [’a#reify. ’a Dynamic.dyn -> string]
この関数は,与えられたJSONデータの文字列表現を返します. 文字列表現には,’aのインスタンスによらず,JSONデータに 含まれる全体が含まれます.
その他,動的型付けやリーフィケーションの諸機能も,型が示すように, そのままJSONに用いることができます. 逆に,動的型付けされた値を部分動的レコードにすることも可能です.