2016-12-13 55 views
0

我有,我从JSON解析记录:解析时如何将字符串JSON值膨胀到对象?

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

type alias Article = { 
    pubDate: String 
} 

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

现在,如果我想使用DatepubDate而不是原始字符串,我该如何更改代码“膨胀”与Date.fromString JSON的价值?

回答

1

术语

有没有这样的任期充气,榆树词汇

解码 JSON字符串或JavaScritpt对象。

榆树没有任何物品。

所以你想解码一个字符串与格式化日期到Date类型的数据结构。

实施

截至今天(0.18.0)从核心Date.fromStringproven to be unreliable.

您应该使用Date.Extra.fromIsoStringjustinmimbs/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 
      ) 
0

它看起来像这样将工作:

type alias Article = { 
    pubDate: Date 
} 

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

pubDateDecoder : Decoder Date.Date 
pubDateDecoder = 
    string |> andThen (\s -> 
     case Date.fromString s of 
      Err e -> fail e 
      Ok d -> succeed d 
     )