我有一个JSON结构,其中包含period可以是对象或字符串的字段。我已经在代码中准备好了变体,并且可以正常工作:
type period = {
start: string,
end_: string,
};
type periodVariant =
| String(string)
| Period(period);
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试将输入JSON转换为变量类型时:我只是不知道该怎么做。这是我的尝试:
let periodVariantDecode = (json: Js.Json.t): periodVariant => {
switch(json) {
| String(string) => String(Json.Decode.string(string))
| period => Period(Json.Decode.{
start: period |> field("start", string),
end_: period |> field("end", string),
})
};
};
Run Code Online (Sandbox Code Playgroud)
现在,当然是因为我想匹配的东西,是类型还是不行的Js.Json.t对抗String这是我的一部分periodVariant,但我不知道该如何实现我想要的。