2017-01-12 7 views
1

これは私がNothingをElm Json.Decoderにマップする方法?

type alias Header = 
    { value : String 
    , term : Maybe String 
    } 

を持っていると私はJson.Decode Decoderを移入する必要がエルムv0.18

について質問です。ただし、valueはJSONにのみ存在し、termにはNothingを割り当てる必要があります。

私は、存在しないフィールドと一緒にJson.Decode.maybeを使用してハック方法でデコーダを構築することができる午前:DecoderNothingで値を生成するための「正しい」方法です

import Json.Decode exposing (map2, field, string, maybe) 

map2 Header (field "header" string) 
    (maybe (field "no_such_field" string)) 

何?

答えて

2

Json.Decode.succeedは、デコーダで一定値をラップするために使用できます。

map2 Header (field "header" string) 
    (succeed Nothing) 
1

ただ一つだけの引数、「ヘッダ」を取り、常に言葉のためNothingを埋め無名関数を使用することです簡単な方法:

map (\header -> Header header Nothing) (field "header" string) 

または同等

map (\header -> { value = header, term = Nothing }) (field "header" string) 
関連する問題