82

GitHub - seagreen/Son: A minimal subset of JSON for machine-to-machine communica...

 6 years ago
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

master

Go to file

Code

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

Number
  • No exponential notation
  • No trailing zeros in fractions
  • No negative zero
  • No positive sign

positiveInteger:

Positive Integer

fraction:

Fraction

Son Strings

String
  • 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:

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

Special Thanks

Differences between this and related projects

See here.

Notes

  • The diagrams were generated with GrammKit.

  • ./vendored/rfc7159.txt is from here.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK