使用 ppx_yojson_conv 反序列化 JSON 数据
任务
数据格式 / JSON / 反序列化 JSON 数据
使用的 Opam 包
- ppx_yojson_conv 测试版本:v0.17.0 — 使用的库:ppx_yojson_conv
- yojson 测试版本:2.1.2 — 使用的库:yojson
代码
我们打开 Ppx_yojson_conv_lib.Yojson_conv.Primitives
以将反序列化基本类型函数引入作用域。
open Ppx_yojson_conv_lib.Yojson_conv.Primitives
let json = {|
{
"name": "ocaml",
"url": "https://ocaml.org.cn/"
}
|}
注释 [@@deriving of_yojson]
使来自 ppx_yojson_conv
的 PPX 生成一个函数 language_of_yojson
,该函数将 Yojson.Safe.t
类型的值转换为 language
类型。
type language = {
name: string;
url: string
} [@@deriving of_yojson]
首先我们将 JSON 字符串转换为 Yojson.Safe.t
,然后我们使用生成的函数创建记录。如果解析失败,则会抛出 Of_yojson_error
异常,我们可以处理该异常。
try
let result =
json
|> Yojson.Safe.from_string
|> language_of_yojson
Some result
with Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (exception, _) ->
let _ =
Printexc.to_string exception print_endline in
None