3

私の理解では、この {"xxx": 1000000000000000} は有効ですよね?

Yojson.Safe で解析する方法がわかりません。_ `Int64 の int64 _ のようなものを探していますが、何も提供されていません。API には _ `Int の int _ と _ `Intlit の 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)]
4

1 に答える 1

3

IntOCaml に収まる場合は Yojson が返されint`Intlitそうでない場合はすべてのケースを処理する必要があるようです。

match json with 
| `Assoc [("xxx", `Intlit lit)] -> Int64.of_string lit
| `Assoc [("xxx", `Int i)] -> Int64.of_int i
于 2014-03-07T10:19:05.827 に答える