我正在尝试实现一个将JSON字符串转换为枚举QuestionType
实例的Argonaut JSON解码器实例。问题是如果字符串不是有效的,则返回的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
转换为DecodeResult
,包含选项的内容,如果是None
,则转换为错误状态DecodeResult
1}}。
我可以使用CursorHistory
的构造函数,但说实话,我的签名对我来说非常混乱(我是scala的新手)。它似乎需要一个'cities': data['results']
对象,而且我不确定我应该在那里传递什么。
答案 0 :(得分:2)
DecodeResult对象有一个&#39; ok&#39;并且“失败”#39;方法
implicit def QuestionTypeDecodeJson: DecodeJson[QuestionType] = {
DecodeJson(c => for {
typeName <- c.as[String]
questionType = DecodeResult.ok(QuestionType.fromString(typeName))
} yield questionType)
}