json-schema-spec
json-schema-spec copied to clipboard
Investigate EXI for JSON compatability
EXI for JSON https://www.w3.org/TR/exi-for-json/ is a method of compressing JSON into a compact binary form, using the algorithm defined by EXI (originally defined for XML).
For draft-5, we need not add define any specific compatibility features, but do consider the ways it might be used.
Update news: a new Editor's Draft of the EXI4JSON document is now available at https://www.w3.org/TR/2016/WD-exi-for-json-20160823
Comments about this document are welcome on the [email protected] mailing list Archive: https://lists.w3.org/Archives/Public/public-exi
Announcement by Daniel Peintner:
https://lists.w3.org/Archives/Public/public-exi/2016Aug/0004.html
All, The second public working draft of "EXI for JSON (EXI4JSON)" has been published [1a]. Compared to the previous publication the EXI4JSON structure has been changed for JSON keys (see [1b]).
EXI4JSON allows one to convert JSON documents in an efficient representation by means of EXI. Lossless round-trip conversion back to the original JSON structures is supported too.
For people that would like to experiment there are already some implementations available in Java [2, 3], JavaScript [4] and C [5]. The recent publication updates are already implemented in [2, 3] and a Graphical User Interface as runnable JAR is provided at http://exificient.github.io/java/exificient-gui-jar-with-dependencies.jar.
-- Daniel
[1a] https://www.w3.org/TR/2016/WD-exi-for-json-20160823/ [1b] https://www.w3.org/TR/2016/WD-exi-for-json-20160823/#decisionStructureChange [2] https://github.com/EXIficient/exificient-for-json, Java library [3] https://github.com/EXIficient/exificient-gui, Java GUI [4] http://exificient.github.io/javascript/demo/processJSON.html, JavaScript Demo [5] https://github.com/EXIficient/exificient-for-json.c, C implementation
Nice! This is still a very theoretical idea, but thanks for the notice @brutzman
Weird shower thought: There's only one thing (afaict) that prevents you from building an ABNF out of a JSON Schema, and that is the fact that properties may appear in any order. If we could figure out a way to enforce a property order, then we could generate an ABNF, and/or a more efficient EXI representation.