Consider this recursive type definition:
type NestedList a
= Elem a
| SubList (List (NestedList a))
How can I write a decoder in order to decode a JSON list (e.g [1, [[2, [3, 4]], 5], 6, [7, 8, 9]]) into the NestedList type:
SubList
[ Elem 1
, SubList [ SubList [ Elem 2, SubList [ Elem 3, Elem 4 ] ], Elem 5 ]
, Elem 6
, SubList [ Elem 7, Elem 8, Elem 9 ]
]
It can be done recursively, using
Json.Decode.oneOfandJson.Decode.lazy. The decoder for a nested list of integers looks like this: