sig
  type t =
      Null
    | True
    | False
    | String of string
    | Number of string
    | Int of int
    | Float of float
    | Array of Json.t list
    | Assoc of (string * Json.t) list
  val equal : Json.t -> Json.t -> bool
  val compare : Json.t -> Json.t -> int
  val pp : Format.formatter -> Json.t -> unit
  exception Error of string * int * string
  val of_bool : bool -> Json.t
  val of_int : int -> Json.t
  val of_string : string -> Json.t
  val of_float : float -> Json.t
  val of_list : Json.t list -> Json.t
  val of_array : Json.t array -> Json.t
  val of_fields : (string * Json.t) list -> Json.t
  val load_lexbuf : Lexing.lexbuf -> Json.t
  val load_channel : Pervasives.in_channel -> Json.t
  val load_string : string -> Json.t
  val load_file : string -> Json.t
  val save_string : ?pretty:bool -> Json.t -> string
  val save_buffer : ?pretty:bool -> Buffer.t -> Json.t -> unit
  val save_channel : ?pretty:bool -> Pervasives.out_channel -> Json.t -> unit
  val save_file : ?pretty:bool -> string -> Json.t -> unit
  val bool : Json.t -> bool
  val int : Json.t -> int
  val string : Json.t -> string
  val float : Json.t -> float
  val array : Json.t -> Json.t array
  val list : Json.t -> Json.t list
  val fold : (string -> Json.t -> '-> 'a) -> Json.t -> '-> 'a
  val field : string -> Json.t -> Json.t
end