some overview
Synopsis
structure JSONUtil
Interface
exception NotBool of JSON.value
exception NotInt of JSON.value
exception NotNumber of JSON.value
exception NotString of JSON.value
exception NotObject of JSON.value
exception FieldNotFound of JSON.value * string
exception NotArray of JSON.value
exception ArrayBounds of JSON.value * int
val exnMessage : exn -> string
val asBool : JSON.value -> bool
val asInt : JSON.value -> Int.int
val asIntInf : JSON.value -> IntInf.int
val asNumber : JSON.value -> Real.real
val asString : JSON.value -> string
val findField : JSON.value -> string -> JSON.value option
val lookupField : JSON.value -> string -> JSON.value
val asArray : JSON.value -> JSON.value vector
val arrayMap : (JSON.value -> 'a) -> JSON.value -> 'a list
datatype edge = SUB of int | SEL of string
type path = edge list
val get : JSON.value * path -> JSON.value
val replace : JSON.value * path * JSON.value -> JSON.value
val insert : JSON.value * path * string * JSON.value -> JSON.value
val append : JSON.value * path * JSON.value list -> JSON.value
Description
exception NotBool of JSON.value-
raised by the
asBoolfunction when the argument is not a JSON boolean. exception NotInt of JSON.value-
raised by the
asIntandasIntInffunctions when the argument is not a JSON integer number. exception NotNumber of JSON.value-
raised by the
asNumberfunction when the argument is not a JSON number. exception NotString of JSON.value-
raised by the
asStringfunction when the argument is not a JSON string. exception NotObject of JSON.value-
raised by the
findFieldandlookupFieldfunctions when the argument is not a JSON object. exception FieldNotFound of JSON.value * string-
This exception is raised when the given field is not found in an object.
exception NotArray of JSON.value-
This exception is raised when trying to process a non-array value as an array.
exception ArrayBounds of JSON.value * int-
This exception is raised when access to an array value is out of bounds.
val exnMessage : exn -> string-
exnMessage exnreturns an error-message string for the exception valueexn. This function produces specialized messages for the exceptions defined in theJSONUtilstructure and falls back to the General.exnMessage function for other exceptions. val asBool : JSON.value -> bool-
asBool (JSON.BOOL b)returns the valueb. This function raises theNotBoolexception if the value is not a JSON boolean value. val asInt : JSON.value -> int-
asInt (JSON.INT n)returns the valuenconverted toint. This function raises theNotIntexception if the value is not a JSON integer value. It may also raise theOverflowexception ifnis too large for the defaultinttype. val asIntInf : JSON.value -> IntInf.int-
asIntInf (JSON.INT n)returns the valuen. This function raises theNotIntexception if the value is not a JSON integer value. val asNumber : JSON.value -> Real.real-
asNumber jvconverts the JSON numberjvto an SMLrealvalue. Thejvargument can either have the formJSON.INT n, in which casenis converted to therealtype and returned, orJSON.FLOAT f, in which casefis returned; otherwise, theNotNumberexception is raised. val asString : JSON.value -> string-
asBool (JSON.STRING s)returns the values. This function raises theNotStringexception if the value is not a JSON string value. val findField : JSON.value -> string -> JSON.value option-
findField (JSON.OBJECT flds) keyreturnsSOME jvwhen the list of fieldsfldscontains(key, jv)andNONEotherwise. IffindFieldis called on a value that is not a JSON object, then it raises theNotObjectexception. val lookupField : JSON.value -> string -> JSON.value-
lookupField (JSON.OBJECT flds) keyreturnsjvwhen the list of fieldsfldscontains(key, jv)and raises theFieldNotFoundexception otherwise. IflookupFieldis called on a value that is not a JSON object, then it raises theNotObjectexception. val asArray : JSON.value -> JSON.value vector-
asArray jvconverts the JSON array valuejvto an SML vector value. It raises theNotArrayexception whenjvis not a JSON array. val arrayMap : (JSON.value -> 'a) -> JSON.value -> 'a list-
map a conversion function over a JSON array to produce a list; this function raises the
NotArrayexception if the second argument is not an array. datatype edge = …-
specifies an edge of a path into a JSON value. The constructors have the following meaning:
SUB of int-
SUB ispecifies theith element of a JSON array. SEL of string-
SEL keyspecifies the value labeled bykeyin a JSON object.
type path = edge list-
specifies a path into a JSON value.
val get : JSON.value * path -> JSON.value-
get (jv, path)returns the component ofjvnamed bypath. It raises one of theNotObject,NotArray, orFieldNotFoundexceptions if there is an inconsistency between the path and the structure ofjv.