I am trying to make a json that will be acceptable by visjs-network library.
https://visjs.github.io/vis-network/docs/network/
To do so I need to create an array of nodes and edges. While each node consists of fields that names are safe to use as records' fields in OCaml (id,label etc) edges require field with name "to". Unfortunately this is a keyword in OCaml so I can't make it a name of a record.
I am using ppx_yojson_conv for converting OCaml records into yojson objects.
https://github.com/janestreet/ppx_yojson_conv https://github.com/ocaml-community/yojson
Here is some code:
type node = {id:int;label:string;shape:string;color:string} (* this type is perfectly ok since it is exactly what visjs library accepts and OCaml accepts each of its fields' name *)
[@@deriving yojson_of]
type edge = {from:int;to:int;arrow:string} (* this type is what visjs accepts but OCaml does not allow to create field with the name "to" *)
[@@deriving yojson_of]
Can I somehow create an OCaml type that will be easily parsable by yojson library without manual conversion of each field ?