【发布时间】:2018-06-19 19:39:58
【问题描述】:
我有一个 JSON 结构,其中包含一个字段 period,它可以是对象或字符串。
我已经在我的代码中准备好变体,它工作正常:
type period = {
start: string,
end_: string,
};
type periodVariant =
| String(string)
| Period(period);
问题是当我尝试将输入 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),
})
};
};
现在,这当然行不通,因为我正在尝试将仍然是 Js.Json.t 类型的东西与 String 进行匹配,String 是我的periodVariant 的一部分,但我不知道如何实现我想要什么。
【问题讨论】:
标签: json reason bucklescript bs-json