作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经定义了一个简单的 serverResponse
来模拟来自 api 的响应以在 elm-lang 中解析。
我在从 Result
到显示信息的 HTML 时遇到了问题!
最好的方法是什么?
import String exposing (..)
import String exposing (..)
import List exposing (..)
import Result exposing (map)
import Json.Decode as Json exposing (..)
type alias Team =
{ department : String
, names: List String
}
serverResponse =
"""
[{"department":"product","names":["bob","sally","george"]},{"department":"marketing","names":["billy","diane","anita"]},{"department":"sales","names":["howard","steve","isha"]}]
"""
stringDecoder =
Json.list Json.string
infoDecoder : Json.Decoder Team
infoDecoder =
Json.map2 Team
(Json.field "department" Json.string)
(Json.field "names" stringDecoder)
teamDecoder : Json.Decoder (List Team)
teamDecoder =
Json.list infoDecoder
toList team =
p [] [
team.department
]
transformList teams =
toList teams
main =
Json.decodeString teamDecoder serverResponse
|> toString
|> text
最佳答案
您可以使用case
语句来提取解码结果。这允许您显式处理解码器的成功和失败。
您的 main
函数可以更改为以下内容(请注意,我已经重新定义了 toList
,因为您没有返回有效的 Html):
toList : Team -> Html msg
toList team =
p [] [ text team.department ]
main =
case Json.decodeString teamDecoder serverResponse of
Ok teams ->
div [] (List.map toList teams)
Err msg ->
text ("ERROR: " ++ msg)
Result
是具有两个构造函数的联合类型:Ok
和 Err
。您可以阅读 union types in the Elm Guide .
关于elm - 如何在 elm 中显示结果类型的 Html 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41386502/
我是一名优秀的程序员,十分优秀!