2016-12-13 92 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 
     )