JSON
Parse
Bind to JavaScript's JSON.parse
and type the return value as the type you're expecting:
ReScriptJS 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
:
ReScriptJS 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.