Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


The parse transform json_parser lets you write Json structures directly in your Erlang code, and it will be translated into Erlang terms in accordance with EEP-18.

For now it only handles one of the suggested formats in EEP-18, one could possibly implement options to the transform to get other translations.

You use the special marker: <<{ Json-Term }>> to use the json syntax:

An empty json object {} is translated into [{}].

An json object with fields {Label : Term} is translated into [{<<"Label>>, translate(Term)}].

A json array [1,2,3] is translated into a list: [1,2,3].

A json string "foo" is translated into a binary string <<"foo">>.

A json integer is translated into an Erlang integer and a float into a float.

The json constants true, false, and null are translated into the atoms 'true', 'false', and 'null'.

A variable reference is left as it is, it is assumed to contain an Erlang representation of a json object.


foo() -> <<{ { "foo" : 42 } }>>.

is translated into foo() -> [{<<"foo">>, 42}].

Due to the precedence rules of the ":" and "-" operators in Erlang there is a small inconvenience, you have to put negative numbers in objects within parentheses.

i.e. <<{ { "foo" : (-42) } }>>. is ok but not <<{ { "foo" : -42 } }>>. Note that negative numbers are ok by them selves or in arrays: <<{ [-42] }>>. is ok.

You can’t perform that action at this time.