Борьба, чтобы найти правильный путь для завершения моего декодера. Я начинаю с данными формыElm: Декодирование Json до простой структуры записи
[{_id:'interests', [{obj1}, {obj1}]}
,{_id:'countries', [{obj2}, {...}]}
,{_id:'sections', [{obj3}, {...}]}]
Я хочу, чтобы добраться до Decoder Summary
где
type alias Summary =
{ sections : List Section
, interests : List Interest
, countries : List Country
}
До сих пор лучшее, что я был в состоянии добраться до является выходом такого рода:
[ Interests (List Interest), Countries (List Country), Sections (List Section)]
, но которые все еще требуют некоторого довольно хрупкого сопоставления с образцом (опираясь на последовательный порядок массива и поэтому очень проблематичен с 0,16). Для этого я использую
summaryItemDecoder : String -> Decoder SummaryInfo
summaryItemDecoder item =
let dec =
case item of
"sections" -> Json.map Sections sectionsDecoder
"interests" -> Json.map Interests interestsDecoder
"countries" -> Json.map Countries countriesDecoder
in ("data" := dec)
listSummaryDecoder : Decoder (List SummaryInfo)
listSummaryDecoder =
("_id" := string) `Json.andThen` summaryItemDecoder
|> list
Полный код here. Благодарны за некоторые окончательные советы
Спасибо, я действительно добавил шаблон комбинезона, но на самом деле надеюсь, что смогу найти более гибкий выход –