2016-10-18 7 views
3

私はElmでJSONを解析することに頭をはくるのに少し難しかったです。私は基本を持っているようですが、何らかの理由でJSONのこの小さな部分が私を困惑させてしまいました。ここでElm:JSONでのステータスコードの解析(潜在的なエラーメッセージ付き)

はシナリオです:それが失敗した場合

{ 
    "status": "success", 
    "post": { ... } 
} 

:要求が成功した場合

:私は2つの形式のいずれかで返しますJSON APIに投稿しています

{ 
    "status": "error", 
    "message": "Some error message" 
} 

これらのデータ型にこのJSON応答をエンコードしようとしています。

type RequestStatus = Success | Error String 


type alias CreatePostResponse = 
    { status : RequestStatus 
    , post : Maybe Post } 

これまでのところ私は運がなかった。私はJSON.Decodeチュートリアルとthis Thoughtbot articleガイドを見てきましたが、どちらも正しい場所に私を得ていないようです。ここで私が持っているコードは、これまでです:

createPostResponse : Decoder CreatePostResponse 
createPostResponse = 
    succeed CreatePostResponse 
    |: (("status" := string) `andThen` (("error" := string) `andThen` decodeStatus)) 
    |: maybe ("post" := post) 


decodeStatus : String -> String -> Decoder RequestStatus 
decodeStatus status errorMessage = 
    succeed (case status of 
     "success" -> Success 
     "error" -> Error errorMessage 
     _ -> Error "unknown") 

明らかにこれは型エラーのすべての種類を生成し、コンパイルされませんが、私はから文字列を取得するための良い方法を考え出すことができていません」メッセージ "フィールドをRequestStatusタイプに変換します。

誰にもアイデアはありますか?

答えて

関連する問題