我正在尝试实现一个 Argonaut JSON 解码器实例,它将 JSON 字符串转换为我的 enum 实例QuestionType
。问题是如果字符串无效,返回的 DecodeResult 应该是一个错误,我不知道该怎么做。
我的代码目前如下所示:
implicit def QuestionTypeDecodeJson: DecodeJson[QuestionType] = {
DecodeJson(c => for {
typeName <- c.as[String]
questionType = QuestionType.fromString(typeName).get
} yield questionType)
}
QuestionType.fromString(typeName)
返回一个Option
. 理想情况下,我不想使用get
,而是将 转换Option
为 a DecodeResult
,使用 Option 的内容,或者如果它是None
.
我可以使用 的构造函数DecodeResult
,但老实说,它的签名让我很困惑(我是 scala 的新手)。似乎它需要一个CursorHistory
对象,我不确定我应该在那里传递什么。