Now that we understand exactly how to convert JSON strings into typed Reason data structures, we notice that the process is a bit tedious. It's more lines of code than one would expect coming from a dynamic language such as JavaScript. Also, there is quite a bit of repetitive code. As an alternative, many in the Reason community have adopted bs-json as an "official" solution for encoding and decoding JSON.
Let's create a new module called DataBsJson.re and a new interface file, DataBsJson.rei. We'll copy the exact same interface as we had in DataPureReason.rei so that we know that, once we're done, we'll be able to replace all references to DataPureReason with DataBsJson and everything should work the same.
The exposed interface is as follows:
/* DataBsJson.rei */
[@bs.val] [@bs.scope "localStorage"] external getItem: string...