You are currently looking at the v6.0 - v8.2 docs (Reason v3.6 syntax edition). You can find the latest manual page here.
(These docs are equivalent to the old BuckleScript docs before the ReScript rebrand)
JSON
Parse
Bind to JavaScript's JSON.parse
and type the return value as the type you're expecting:
Reason (Old Syntax)ML (Older Syntax)JS Output
// 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
:
Reason (Old Syntax)ML (Older Syntax)JS Output
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.