GitHub - seagreen/Son: A minimal subset of JSON for machine-to-machine communica...
source link: https://github.com/seagreen/Son
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
seagreen/Son
A subset of JSON.
JSON contains redundant syntax such as allowing both 10e2
and 10E2
. This helps when writing it by hand but isn't good for machine-to-machine communication. Piping JSON through multiple programs creates lots of trivial changes, which makes it hard to do things like take meaningful diffs.
Son is a subset of JSON without redundant options. It's intended for machine-to-machine communication by programs that want to follow Postel's Law -- they can accept normal JSON for flexibility and output Son for consistency.
Son Numbers
- No exponential notation
- No trailing zeros in fractions
- No negative zero
- No positive sign
positiveInteger:
fraction:
Son Strings
- No unnecessary escape sequences
JSON doesn't allow Unicode characters below codepoint x20 or unescaped "
and \
in strings. To allow these to still be encoded in JSON we've had to keep a few escape sequences. We use two-character escape sequences (e.g. \n
) when available, and six-character ones (e.g. \u0001
) when not.
shortcutEscape:
Other Changes from JSON
- No insignificant whitespace
Status
Unreleased. Like JSON, the intention is that once Son is released it will never change.
Specification
The formal part of its specification is ./son.ebnf. It uses the EBNF notation described here.
Additionally:
-
The only valid byte encoding of Son is UTF-8. Byte order marks are forbidden.
-
Object keys must be unique.
-
Object members must be sorted by ascending lexicographic order of their keys.
Implementations
- Haskell reference implementation: ./implementation.
Special Thanks
-
@chmike and @etherealvisage: key ordering should specify "ascending".
-
@John-Nagle: UTF-8 should be the only allowed encoding.
Differences between this and related projects
See here.
Notes
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK