Как использовать данные.Аргонавт.Модуль декодирования с помощью JSON с любым полем?

#purescript

Вопрос:

Я знаю, есть ли у меня JSON с определенными известными полями, такими как «дата» и «название».

 {
  "date": "any string",
  "title": "any string"
}
 

Затем я могу расшифровать его, определив

 myDecodeFunc :: Json -> Either JsonDecodeError ({ date :: String, title :: String })

myDecodeFunc = decodeJson
 

Однако я, похоже, не могу найти, как декодировать один и тот же JSON с произвольными полями, подобными этому.

 {
  "any field": "any string",
  "any field": "any string"
}
 

Я новичок в Purescript, поэтому буду признателен за любые указания. Спасибо.

Ответ №1:

Причудливый термин для обозначения «записи», когда вы заранее не знаете всех возможных полей,-это словарь.

И чтобы проанализировать JSON в качестве словаря, используйте тип словаря, например, Foreign.Object например, у которого просто есть удобный экземпляр FromJSON :

 import Foreign.Object (Object)

myDecodeFunc :: Json -> Either JsonDecodeError (Object String)
myDecodeFunc = decodeJson