2016-05-23 12 views
5

空の(全く文字列がない)応答を処理する最善の方法は何ですか?Elm、JSON decoder:空の文字列をデコードするには?

応答コードは200ですが、空の応答が有効なJSONではないため、Elmはエラーを返します。ここで

は私の現在のコードです:

decodeAlwaysTrue : Json.Decode.Decoder Bool 
decodeAlwaysTrue = 
    Json.Decode.succeed True 

Http.send Http.defaultSettings httpConfig 
    |> Http.fromJson decodeAlwaysTrue 
    |> Task.perform FetchFail DeleteUserSuccess 

はEDIT1:

このPOSTアクション私はgetStringを使用することはできません。

+0

私はあなたの現在のアプローチが好きです。 「成功している」と言っている:「あなたがここに何を持っても、それはいい。 –

+1

@SørenDebois正確ではありません。応答コードが2xxで、応答が有効なJSONであれば成功します。 –

答えて

3

HttpモジュールのgetString機能を使用できます。これは、変換しようとせずにHTTPリクエストから返された文字列をJson値に戻します。

あなたの代わりにHttp.sendを使用する必要がある場合、あなたはこのような何か行うことができます:

Http.send Http.defaultSettings httpConfig 
    |> Task.perform FetchFail (always DeleteUserSuccess) 

これはDeleteUserSuccessが無いタイプのパラメータで定義されるように変更されていることを前提としています

type Msg = 
    ... 
    DeleteUserSuccess 
0

それをJsonの返答を返すことは決してないので、あなたはおそらくもっと使いやすくなるように見えるHttp.getString

type Result = FetchFail Error 
      | DeleteUserSuccess 

Http.getString address 
    |> Task.perform FetchFail (\s -> DeleteUserSuccess) 

成功したgetには情報が含まれていないので、無視して文字列の内容に関係なくDeleteUserSuccessを返すことができます。

+0

私の最初の質問でEDIT1を参照してください –

関連する問題