Shell/RPC: allow immediate value

This a HACK for allowing serialisation of toplevel value that are
float, string,... and not only object or array.

In a latter time, we may prefer to you `yojson` instead of `ezjsonm`,
but some of our dependencies rely on `ezjsonm` and we may not want to
embeds two distinct JSON libraries...
This commit is contained in:
Grégoire Henry 2018-04-16 00:44:23 +02:00
parent 556e95cef0
commit cf9d26740c

View File

@ -274,13 +274,16 @@ let to_root = function
| `Null -> `O []
| oth -> `A [ oth ]
let to_string ?minify j = Ezjsonm.to_string ?minify (to_root j)
let to_string ?minify j =
Format.asprintf "%a" Json_repr.(pp ?compact:minify (module Ezjsonm)) j
let pp = Json_repr.(pp (module Ezjsonm))
let from_string s =
try Ok (Ezjsonm.from_string s :> json)
with Ezjsonm.Parse_error (_, msg) -> Error msg
match Ezjsonm.from_string ("[" ^ s ^ "]") with
| exception Ezjsonm.Parse_error (_, msg) -> Error msg
| `A [ json ] -> Ok json
| _ -> Error "Malformed value"
let from_stream (stream: string Lwt_stream.t) =
let buffer = ref "" in