2016-05-23 25 views
5

Qual è il modo migliore per gestire una risposta vuota (nessuna stringa)?Elm, decodificatore JSON: come decodificare una stringa vuota?

Sebbene il codice di risposta sia 200, Elm restituisce un errore perché una risposta vuota non è un JSON valido.

Ecco il mio codice corrente:

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

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

Edit1:

Questo un'azione POST quindi non posso usare getString.

+0

Mi piace il tuo approccio attuale. 'successo' dice:" non importa quello che si ottiene qui, va bene. " –

+1

@ SørenDebois Non esattamente. Avrà successo se il codice di risposta è 2xx e la risposta è un JSON valido. –

risposta

3

È possibile utilizzare la funzione getString dal modulo Http. Ciò restituirà qualsiasi stringa viene restituita dalla richiesta HTTP senza tentare di convertire è in un valore Json.

Se invece bisogno di usare Http.send allora si potrebbe fare qualcosa di simile:

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

Questo presuppone che DeleteUserSuccess è cambiato da definire senza parametro tipo:

type Msg = 
    ... 
    DeleteUserSuccess 
0

E ' sembra che tu non riesca mai a ottenere una risposta Json, quindi probabilmente starai meglio usando Http.getString

type Result = FetchFail Error 
      | DeleteUserSuccess 

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

Poiché il risultato ottenuto non contiene alcuna informazione, è possibile ignorarlo e restituire DeleteUserSuccess indipendentemente dal contenuto della stringa.

+0

Vedere EDIT1 nella mia domanda iniziale –