sig
type t
type _ kind =
String : Js_string.t Js_json.kind
| Number : float Js_json.kind
| Object : Js_json.t Js_dict.t Js_json.kind
| Array : Js_json.t array Js_json.kind
| Boolean : Js.boolean Js_json.kind
| Null : Js_types.null_val Js_json.kind
type tagged_t =
JSONFalse
| JSONTrue
| JSONNull
| JSONString of string
| JSONNumber of float
| JSONObject of Js_json.t Js_dict.t
| JSONArray of Js_json.t array
val classify : Js_json.t -> Js_json.tagged_t
val reifyType : Js_json.t -> 'b Js_json.kind * 'b
val test : 'a -> 'b Js_json.kind -> bool
val decodeString : Js_json.t -> Js_string.t option
val decodeNumber : Js_json.t -> float option
val decodeObject : Js_json.t -> Js_json.t Js_dict.t option
val decodeArray : Js_json.t -> Js_json.t array option
val decodeBoolean : Js_json.t -> Js.boolean option
val decodeNull : Js_json.t -> 'a Js_null.t option
external null : Js_json.t = "" "BS-EXTERNAL"
external string : string -> Js_json.t = "%identity"
external number : float -> Js_json.t = "%identity"
external boolean : Js.boolean -> Js_json.t = "%identity"
external object_ : Js_json.t Js_dict.t -> Js_json.t = "%identity"
external array_ : Js_json.t array -> Js_json.t = "%identity"
external array : Js_json.t array -> Js_json.t = "%identity"
external stringArray : string array -> Js_json.t = "%identity"
external numberArray : float array -> Js_json.t = "%identity"
external booleanArray : Js.boolean array -> Js_json.t = "%identity"
external objectArray : Js_json.t Js_dict.t array -> Js_json.t = "%identity"
external parse : string -> Js_json.t = "parse" "BS-EXTERNAL"
external parseExn : string -> Js_json.t = "parse" "BS-EXTERNAL"
external stringify : Js_json.t -> string = "stringify" "BS-EXTERNAL"
external stringifyAny : 'a -> string option = "stringify" "BS-EXTERNAL"
end