You are currently looking at the v11.0 docs, which are still a work in progress. If you miss anything, you may find it in the older v10.0 docs here.

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
@scope("JSON") @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.