解析时如何将字符串JSON值膨胀到对象?

时间:2016-12-13 10:11:02

标签: json parsing elm

我有一个我从JSON解析的记录:

import Json.Decode exposing (..)
import Json.Decode.Pipeline exposing (..)

type alias Article = {
    pubDate: String
}

articleDecoder : Decoder Article
articleDecoder =
    decode Article
        |> required "pubDate" string

现在,如果我想将Date用于pubDate而不是原始字符串,如何更改代码以使Date.fromString“膨胀”JSON值?

2 个答案:

答案 0 :(得分:1)

术语

在Elm词汇表中没有 inflate 这样的术语。

解码 JSON字符串或JavaScritpt对象。

榆树中没有物品。

因此,您希望将格式化日期的字符串解码为Date类型的数据结构。

实施

截至今天(0.18.0Date.fromString来自核心proven to be unreliable.

您应该使用Date.Extra.fromIsoString模块中的justinmimbs/elm-date-extra来获得ISO 8601更可靠的日期解析。

为了清晰起见,我保留了名称空间。

dateDecoder : Decoder Date
dateDecoder =
    Json.Decode.string
        |> Json.Decode.andThen
            (\s ->
                case Date.Extra.fromIsoString s of
                    Err e ->
                        Json.Decode.fail e

                    Ok d ->
                        Json.Decode.succeed d
            )

答案 1 :(得分:0)

看起来这样可行:

['', '0000000000000028', '0000000001000028313233340500060007000000', '00000000020000280100000002000000', '0000000003000028310002003300000004000000', '000000000400002801000000320002000100000032000000', '0000000000000030', '0000000001000030313233340500060007000000', '00000000020000300100000002000000', '0000000003000030310002003300000004000000', '000000000400003001000000320002000100000032000000']