Quantcast
Channel: Hacker News
Viewing all articles
Browse latest Browse all 25817

RFC: Son (a subset of JSON for machine-to-machine communication)

$
0
0

README.md

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

Unreleased. Like JSON, the intention is that once Son is released it will never change.

The formal part of its specification is ./son.ebnf. It uses the EBNF notation described here.

Additionally: object keys must be unique. Object members must be sorted by lexicographic order of their keys.

See here.

  • The diagrams were generated with GrammKit.

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


Viewing all articles
Browse latest Browse all 25817

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>