Elm中Json解码后的类型的访问字段

时间:2019-07-29 15:37:23

标签: json elm

我正在尝试用榆木宽度将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
     

但是我需要一条带有标题字段的记录!

1 个答案:

答案 0 :(得分:2)

仔细阅读榆木指南将有助于解决此问题:https://guide.elm-lang.org/error_handling/result.html

我们需要用Ok处理Errcase的两种情况。

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") ]