Skip to content


We are looking for publications that demonstrate building dApps or smart contracts!
See the full list of Gitcoin bounties that are eligible for rewards.



A valid JSON text must follow the grammar defined in RFC7159

Additional specifications used by json_ref that are extensions to the RFC7159 grammar are listed below.

File Encoding

  • Only utf-8 encoded are accepted
  • The byte order mark (BOM), "\uFEFF", is not allowed at the beginning of a JSON text
  • Raw non-unicode characters not accepted

Invalid JSON text

\uFEFF{"key0": 1}
{"key0": "\uFF"}


duplicate key

Duplicate keys at the top level result in an error; however, duplicate keys nested at a lower level are ignored.

Invalid JSON text
{"key0": 1,"key0": 2}
Acceptable JSON text
{"key0": 1,"key1": {"key2":2,"key2":"10"}}


  • Only integers between 0 and 2^64-1 are accepted
  • All other values result in an error
Special Values
  • null, true, false are the only accepted special values.
  • other special values such as NaN,+Inf,-Inf are not accepted
Exponential Notation

Exponential notation is not accepted

Invalid JSON text
{"key": 1.2E-6}
{"key": 0.2E+8}
Hex values

Hex values are not accepted

Invalid JSON text
{"key0": 0x1}
{"key0": 0xFF}

Trailing Commas

Trailing commas are not accepted.

Invalid JSON text
{"key": 4160,,,}
{"key": "algo",,,}


Comment blocks are not accepted.

Invalid JSON text
{"key0": /*comment*/"algo"}
{"key0": [1,/*comment*/,3]}

White Spaces

  • space, tab(\t), new line(\n) and carriage return(\r) are allowed
  • form feed(\f) is not allowed

Escaped Characters

  • control chars (U+0000 - U+001F) must be escaped
  • surrogate pairs are accepted
  • escaped invalid characters are replaced by replacement character (U+FFFD)

a valid surrogate pair

{"key0": "\uD801\udc37"}

replaced by U+FFFD

{"key0": "\uD800\uD800n"}