Open disteph opened 3 years ago
Also, there is json-data-encoding. It provides Json_schema
module that "contains an OCaml intermediate representation for the JSON schema document grammar description language, along with translators to / from the concrete JSON schema format."
But it cannot autoderive schema from the OCaml datatype as well. I had the same thoughts as yours and decided that the only way is to write own ppx extention.
Feature request: I'd be interested in automatically generating a json schema (in the sense of https://json-schema.org) out of an OCaml type definition. A json schema is describing a subset of all jsons and can be seen as a json type or a validity criterion on a json structure. Say if I have an OCaml type
ty = ... [@@deriving yojson]
, the json structures produced byyojson_of_ty
, when applied to OCaml values of typety
, would be json structures abiding by the schema.Ideally the schema would capture exactly the image of
yojson_of_ty
, but I expect the notion of json schema to be less expressive than OCaml's type system (e.g., I don't think json schemas have polymorphism and I think that in a json schema, all elements of JSON arrays must have the same type --which would be problematic for the encoding of OCaml's tuples as json arrays)... ...so for the moment what would be enough is producing a json schema that captures the image ofyojson_of_ty
for a simple class of OCaml typesty
(no tuples, all constructors have "record-like / named arguments", etc), and perhaps producing a reasonable superset of that image whenty
is outside that class.Has anybody heard of a project doing what I need?