определить, имеет ли объект JSON ключ с помощью Yojson

#ocaml

#ocaml

Вопрос:

Как я могу проверить, существует ли поле в объекте JSON, используя Yojson в OCaml? Мне нужно что-то вроде 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? %bn" has_x has_y (* true, false *)
  

Ответ №1:

Yojson.Basic.Util.member "x" data возвращает Null , если «x» не является ключом данных Yojson; или `Assoc, если «x» является ключом.

вы можете определить

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