You are currently looking at the < v8.2.0 docs (Reason v3.6 syntax edition). You can find the latest manual page here.
(These docs cover all versions between v3 to v8 and are equivalent to the old BuckleScript docs before the rebrand)
JSON
Parse
Bind to JavaScript's JSON.parse
and type the return value as the type you're expecting:
// declare the shape of the json you're binding to
type data = {names: array(string)};
// bind to JS' JSON.parse
[@bs.scope "JSON"] [@bs.val]
external parseIntoMyData: string => data = "parse";
let result = parseIntoMyData({|{"names": ["Luke", "Christine"]}|});
let name1 = result.names[0];
Where data
can be any type you assume the JSON is. As you can see, this compiles to a straightforward JSON.parse
call. As with regular JS, this is convenient, but has no guarantee that e.g. the data is correctly shaped, or even syntactically valid. Slightly dangerous.
Stringify
Use Js.Json.stringify
:
Js.log(Js.Json.stringifyAny([|"Amy", "Joe"|]));
Advanced
The Js.Json module provides slightly safer, low-level building blocks for power users who want to parse JSON on a per-field basis. See the examples in the API docs.