Source file encode.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module Ezjsonm_encodeable = struct
  type value = Ezjsonm.value

  let to_string = function
    | `Null -> "null"
    | `Bool bool -> string_of_bool bool
    | `Float float -> string_of_float float
    | `String string -> Printf.sprintf "%S" string
    | (`A _ | `O _) as json -> Ezjsonm.(to_string json)

  let of_string x = `String x
  let of_int x = `Float (float_of_int x)
  let of_float x = `Float x
  let of_bool x = `Bool x
  let null = `Null

  let of_list xs = `A xs
  let of_key_value_pairs xs =
    `O
      (xs
       |> CCList.filter_map (fun (k, v) ->
           match k with
           | `String k -> Some (k, v)
           | _ -> None))
end

include Decoders.Encode.Make(Ezjsonm_encodeable)