json - Yojson 解析 int64 (ocaml)

标签 json ocaml bigint int64

根据我的理解,这个 {"xxx": 1000000000000000} 是有效的吗?

不确定如何使用 Yojson.Safe 解析它。我正在寻找类似 _ `Int64 of int64 _ 的东西,但没有提供,api 上只有 _ `Int of int _ 和 _ `Intlit of string _。

编辑,这是我的问题

let x = "{\"xxx\": 10000000000000}"
let json = Yojson.Safe.from_string x
match json with `Assoc [("xxx", `Intlit yyy)] -> yyy | _ -> assert false

不会匹配,因为json的类型是

val json : Yojson.Safe.json = `Assoc [("xxx", `Int 10000000000000)]

最佳答案

似乎 Yojson 返回 Int 如果它适合 OCaml int`Intlit 否则你需要处理所有情况:

match json with 
| `Assoc [("xxx", `Intlit lit)] -> Int64.of_string lit
| `Assoc [("xxx", `Int i)] -> Int64.of_int i

关于json - Yojson 解析 int64 (ocaml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246577/

相关文章:

installation - OCaml 安装,找不到二进制文件

c++ - 复制构造函数和重载的加法运算符

c - 你如何编写一个 bigint 库/libgmp 是如何工作的?

javascript - 将 36 进制转为 BigInt?

ios - Swift Google map 从 json 获取坐标

javascript - 刷新网页后如何存储数据?

c++ - 使用 opam 安装适用于 Z3 的 ocaml API

environment-variables - ocaml:是否有环境变量来设置#use和#load的搜索路径?

ios - JSON 从 PHP 到 iOS 并从 UILabel 更新

jquery - 使用选择框将 HTML 表格转换为 JSON