我在我的项目中使用Core和atdgen。
我有以下记录,我想在JSON中序列化:
type person = {
(* ... *)
birth : Time.t;
(* ... *)
}
是否可以在我的atd文件中告诉如何将Time.t
值序列化为字符串(通过调用Time.to_string
)?
答案 0 :(得分:2)
尽管@ everiq的答案有效,但有一种更简单的方法可以将JSON字符串转换为自定义类型。至少对我而言。
type time = string wrap <ocaml t="Core.Std.Time.t"
wrap="Core.Std.Time.of_string" unwrap="Core.Std.Time.to_string">
type person = {
(* ... *)
birth : time;
(* ... *)
}
答案 1 :(得分:0)
你可以在这样的模块中包装Time.t:
type time <ocaml_json module="TimeWrapper" t="t"> = abstract
然后在TimeWrapper中定义自己的读/写函数:
(* timeWrapper.mli *)
type t
val read_t : Yojson.Safe.lexer_state -> Lexing.lexbuf -> t
val write_t : Bi_outbuf.t -> t -> unit