检测JSON对象是否具有Yojson键

时间:2019-03-07 17:31:11

标签: ocaml

如何使用OCaml中的Yojson检查JSON对象中是否存在字段?我需要类似has_key的函数,如下所示:

let () =
  let data = Yojson.Basic.from_string "{\"x\": 4}" in
  let has_x = has_key data "x" in
  let has_y = has_key data "y" in
  Printf.printf "has_x? %b, has_y? %b\n" has_x has_y (* true, false *)

1 个答案:

答案 0 :(得分:2)

如果“ x”不是Yojson数据的键,则

Yojson.Basic.Util.member "x" data返回Null。或`Assoc(如果“ x”是键)。

您可以定义

  let has_key d k = not ((Yojson.Basic.Util.member k d) = `Null);;