Вы можете вкладывать звонки на Json.Encode.object
. Каждый раз, когда вам нужен новый объект в выводе, вам нужен еще один, например:
poiFormEncoder : Model -> Encode.Value
poiFormEncoder model =
Encode.object
[ ( "name", Encode.string model.name )
, ( "coordinates"
, Encode.object
[ ( "type", Encode.string model.poi_coordinates.coord_type )
, ( "coordinates", Encode.list Encode.float model.poi_coordinates.coordinates )
]
)
]
Это должно иметь смысл: это список из (key, value)
пар, а значение должно быть другим объектом.
На заметку, это будет зависеть от вашего варианта использования, но ваш тип Coordinates
выглядит как основной кандидат для пользовательского типа Elm, например:
type Coordinates
= Point { x : Float, y : Float }
| Polar { r : Float, t : Float }
| ...
Если вы найдете вы много проверяете значение строки type
и затем соответственно обрабатываете координаты, что-то вроде этого может быть гораздо более приятной структурой для внутреннего использования. Конечно, лучшее представление будет зависеть от того, как вы используете тип.