我正在尝试用榆木宽度将json解码为某种类型的小步骤。我的类型是:
type alias Project =
{ title : String
, description : String
}
和带有解码逻辑的函数,并显示项目的标题。
render : (String, String) -> Html Msg
render (jsonString, otherString) =
let project = Decode.decodeString projectDecoder (jsonString)
in div [] [ text (project.title) ]
projectDecoder : Decode.Decoder Project
projectDecoder =
Decode.map2
Project
(Decode.at [ "title" ] Decode.string)
(Decode.at [ "description" ] Decode.string)
但是我有一个错误,表明解码器将返回一个Error而不是一个项目。
这不是一条记录,因此没有可访问的字段!
32 |在div [] [文本(project.title)]中 这个
project
值是:Result Decode.Error Project
但是我需要一条带有标题字段的记录!
答案 0 :(得分:2)
仔细阅读榆木指南将有助于解决此问题:https://guide.elm-lang.org/error_handling/result.html
我们需要用Ok
处理Err
和case
的两种情况。
render : (String, String) -> Html Msg
render (jsonString, otherString) =
let project = Decode.decodeString projectDecoder (jsonString)
in
case project of
Ok status -> div [] [ text (status.title) ]
Err _ -> div [] [ text ("A error occurs") ]