2016-07-16 100 views
3

Ich habe Tupel von (String, Bool), die in JSON Array in Ulm codiert werden müssen.Wie Tupel zu JSON in Ulme zu kodieren

Dieser Link ist nützlich für die primitiven Typen und andere Listen, Arrays und Objekte. Aber ich muss tuple2 kodieren.

Siehe: http://package.elm-lang.org/packages/elm-lang/core/4.0.3/Json-Encode#Value

ich anderen Ansatz wie Codierung Tupel mit toString Funktion versucht. Es gibt mir nicht JSON Array stattdessen produziert String wie unten "(\"r"\,False)".

JSON.Decoder erwartet, dass der Eingabeparameter wie unten beschrieben entschlüsselt wird.

decodeString (tuple2 (,) float float) "[3,4]" 

Siehe: http://package.elm-lang.org/packages/elm-lang/core/4.0.3/Json-Decode

Q: Wenn es Dekodierungsfunktion für tuple2 ist, warum kodieren Funktion es fehlt.

Antwort

7

Sie können eine generali Tupel Größe 2-Encoder wie folgt aufbauen:

import Json.Encode exposing (..) 

tuple2Encoder : (a -> Value) -> (b -> Value) -> (a, b) -> Value 
tuple2Encoder enc1 enc2 (val1, val2) = 
    list [ enc1 val1, enc2 val2 ] 

Dann können Sie es so nennen, vorbei an den Gebertypen möchten Sie für jeden Steckplatz verwenden:

tuple2Encoder string bool ("r", False)