Декодирование с помощью decoders
Decoders — это библиотека комбинаторов для декодировать JSON-подобных структур в пользовательские типы.
Есть драйвера для JSON, S-выражений, MessagePack, CBOR и Bencode.
Пример
ocaml
module D = Decoders_yojson.Basic.Decode;;
type my_user =
{ name : string
; age : int
}
let my_user_decoder : my_user decoder =
let open D in
let* name = field "name" string in
let* age = field "age" int in
succeed { name; age }
D.decode_string my_user_decoder {| { "name": "Артём", "age": 17 } |}
(* - : (my_user, D.error) result =
Decoders__Sig.Ok {name = "Артём"; age = 17} *)
Use case
Если вам не нужен сложный разбор и ваши типа представляются как есть, то используйте решения на базе ppx_deriving, вроде ppx_deriving_yojson и т.д..
Так как decoders даёт нам максимальную гибкость при помощи монадического интерфейса, которым мы не ограничены и можем самостоятельно разбирать сырые значения. Например, как в парсере конфига bavar.