Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (38 sloc) 1.27 KB

####Making erlang record <~> json conversion easy.

Detailed info at exprecs, making json usable

Quick example:



-record(book, {
      style      :: atom(),
      count      :: integer(),
      available  :: boolean(),
      pages      :: integer(),
      excerpt    :: string(),
      author     :: string()

%% the exprecs export of the record interface
-compile({parse_transform, exprecs}).

%% here we provide a mapping of the json key to a record.
new(<<"book">>) ->

%% if the key is unknown, return undefined.
new(_RecName) ->

At this point we can take the following json and transform it into the #book{} record.

  "style": "fiction",
  "count": 1,
  "available": true,
  "pages": 42, 
  "excerpt": "Good bye and thanks for all the fish.",
  "author":"Adams, Douglas"

We can get a #book{} record from the above with

-spec json_to_rec(Json :: string()) -> #book{}.
json_to_rec(Json) ->
    ErlJson = mochijson2:decode(Json),
    Record = book:new(<<"book">>),
    json_rec:to_rec(ErlJson, book, Record).