使用 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.dev.org.tw/"
}
|}
註解 [@@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