elm - 在 Elm 中将整数数组解码为日期

标签 elm

我正在尝试转换这个 json

{ "date": [2018, 2, 3] }

进入这个模型
type alias MyModel = { date: Date }

我知道如何将其解码为列表
decoder = 
   decode MyModel (field "date" (list int))

但我不知道如何将解码器链接在一起。

最佳答案

您可以使用 Json.Decode.index提取已知索引处的值。您需要索引 0、1 和 2 处的值,然后您可以将它们转换为字符串以供 Date.fromString 使用。像这样:

import Date exposing (Date)
import Html exposing (Html, text)
import Json.Decode exposing (..)

dateDecoder : Decoder Date
dateDecoder =
    let
        toDateString y m d =
            String.join "-" (List.map toString [ y, m, d ])
    in
    map3 toDateString
        (index 0 int)
        (index 1 int)
        (index 2 int)
        |> andThen
            (\str ->
                case Date.fromString str of
                    Ok date ->
                        succeed date

                    Err err ->
                        fail err
            )

您可以像这样使用解码器:

decoder = 
    decode MyModel (field "date" dateDecoder)

关于elm - 在 Elm 中将整数数组解码为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48600176/

相关文章:

榆树效应,tick 函数显然永远不会被调用

elm - 有没有办法在 Elm-Html 中生成一个空的 Html 节点?

elm - 假设 a != b 与 Elm 模糊测试

list - 如何更新列表的一个元素

Polymer 和 Elm vdom 不一致

elm - 模式匹配标记的联合类型

arguments - 如何减少 elm 中的争论?

elm - Elm 中是否可以格式化 Markdown?

functional-programming - 如何在 Elm 0.17/0.18 中获取当前时间?

random - Elm - 初始化奇怪行为的随机数