Я только начал работать с Elm, чтобы сделать несколько прототипов интерфейса с использованием API-интерфейса Rest, над которым я работаю. В общем, API возвращает «разумные» структуры данных, которые могут быть декодированы, потому что ключи и типы значений хорошо известны, но несколько типов ресурсов возвращают запись data
, которая имеет только исходный json, который не имеет заданной структуры.Elm decoding unknown json structure
Все, что я читал до сих пор, похоже, предполагает, что вы знаете структуру данных, которые вы декодируете, тогда как в простых js относительно легко перебирать ключи и отражать типы, чтобы определить, как они должны обрабатываться во время выполнения. Я пока не вижу четкого пути к обработке данных такого рода в Вязе.
Например,
{
"name":"foo",
"data": {
"bar": [{"baz":123}, "quux"]
},
...
}
Я хотел бы знать, если это возможно в настоящее время, чтобы разобрать значение data
записи с чем-то сродни
function go(obj)
for key in keys(foo)
if foo[key] is an object
go(foo[k])
else if foo[key] is an array
map(go, foo[k])
...
В частности:
- В настоящее время можно обрабатывать неизвестные, возможно глубоко вложенные и неоднородные данные json в Elm?
- Если да, то можете ли вы дать мне ключевую концепцию или интуицию высокого уровня о том, как автор (ы) предназначал данные, подобные этому, для декодирования?
Я боюсь, что это не «Elm- как «получить структуру, которую вы не знаете. В Elm вы всегда ожидаете, что объект будет содержать определенные свойства, а Elm даже проверит время выполнения для того, все ли свойства, которые вы ожидаете, существуют в этом объекте. –