2016-07-16 5 views
3

У меня есть кортеж (String, Bool), который необходимо закодировать в массив JSON в вязах.Как закодировать кортеж JSON в elm

Эта приведенная ниже ссылка полезна для примитивных типов и другого списка, массива и объекта. Но мне нужно закодировать tuple2.

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

Я попробовал другой подход, как кодирования кортежа с функцией ToString. Это не дает мне JSON Array, вместо этого он создает строку как ниже "(\"r"\,False)".

JSON.Decoder ожидает, что входной параметр будет декодирован как ниже фрагмент.

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

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

Q: Когда есть функция декодирования для tuple2, почему функция кодирования отсутствует его.

ответ

7

Вы можете построить обобщенный кодер размер кортежа 2 так:

import Json.Encode exposing (..) 

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

Тогда вы можете назвать это, как это, проходя типы датчиков вы хотите использовать для каждого слота:

tuple2Encoder string bool ("r", False) 

 Смежные вопросы

  • Нет связанных вопросов^_^