JSON data description and codecs for OCaml