JAXN (pronounced "Jackson") is a standard that carefully extends JSON with a few often-required additions to the data model, and with new syntax that makes it more human friendly.
❗ JAXN IS CURRENTLY WORK-IN-PROGRESS ❗
Until version 1.0 of JAXN is published, everything is considered work-in-progress, and anything might still change. Ideas, feedback and other input is welcome and appreciated. Please feel free to open an issue, or write to
jaxn@icemx.net
.
JAXN extends the JSON data model with the following points:
- Allows non-finite values
NaN
,Infinity
and-Infinity
for numbers. - Adds a new primitive type for values representing binary data.
JAXN text representation extends the JSON text representation with the following points:
# single-line comment
// single-line comment
/* block comment */
- Allow a leading
+
sign. - Allow omission of leading or trailing zeros, e.g.
.5
, or42.
. - Add non-finite values
NaN
andInfinity
. - Add hexadecimal integer values, e.g.
0xDEADBEEF
.
- Add single-quoted strings, e.g.
'This is a "single-quote" string. No really, it is!'
. - Add new escape sequences
\'
,\v
,\0
and\u{X...}
. - Add multiline strings with no escape sequences.
- Add concatenation of strings, e.g.
"Hello," + " world!"
.
- New primitive type that can represent arbitrary byte sequences.
- Two syntactical variants that can be concatenated with each other.
- Hexdumped binary, e.g.
$48656c6c6f2c20776f726c6421
.- Allows optional dots, e.g.
$48.65.6c.6c.6f.2c.20.77.6f.72.6c.64.21
.
- Allows optional dots, e.g.
- Binary strings, e.g.
$"Hello, \x77orld!"
.- Only printable ASCII characters allowed, no control characters.
- No
\uXXXX
or\u{...}
escape sequences allowed, instead: - Add
\xXX
for arbitrary byte values.
- Allow unquoted object keys, e.g.
{ foo: "Hello", bar: 42 }
.
- Allow
[1,2,3,]
and{ foo: "Hello", bar: 42, }
.
- taocpp/json
- ...
Copyright (c) 2017-2018 Daniel Frey and Dr. Colin Hirsch