Acme-CPANModules-JSONVariants
view release on metacpan or search on metacpan
JSON is hugely popular, yet very simple. This has led to various
extensions or variants of JSON.
An overwhelmingly popular extension is comments, because JSON is used a
lot in configuration. Another popular extension is dangling (trailing)
comma.
This list catalogs the various JSON variants which have a Perl
implementation on CPAN.
1) JSON5. <https://json5.org/>, "JSON for Humans". Allowing more
whitespaces, single-line comment (C++-style), multiline comment
(C-style), single quote for strings, hexadecimal number literal (e.g.
0x123abc), leading decimal point, trailing decimal point, positive sign
in number, trailing commas.
Perl modules: JSON5, File::Serialize::Serializer::JSON5.
2) HJSON. <https://hjson.org>, Human JSON. A JSON variant that aims to
be more user-friendly by allowing comments, unquoted keys, and optional
commas. It's designed to be easier to read and write by humans.
Perl modules: (none so far).
3) JSONC. <https://github.com/komkom/jsonc>. JSON with Comments. Also
allows unquoted string values with whitespace as delimiters.
Perl modules: (none so far).
4) jsonc.
<https://code.visualstudio.com/docs/languages/json#_json-with-comments>.
Another "JSON with Comments", supported by Microsoft Visual Code.
Perl modules: (none so far).
5) CSON. <https://github.com/bevry/cson>. CofeeScript Object Notation.
JSON-like data serialization format inspired by CoffeeScript syntax. It
allows for a more concise representation of data by leveraging
CoffeeScript's features such as significant whitespace and optional
commas.
Perl modules: (none so far).
6) RJSON. <https://relaxedjson.org/>. Relaxed JSON. Trailing commas,
Optional commas, comments (C-style and C++-style), single-quoted &
backtick-quoted strings as well as bare/unquoted, hash key without value
(value will default to "undef"). It touts itself as "going beyond other
JSON variants, including JSON5."
Perl modules: JSON::Relaxed.
7) JSON::Diffable. Basically just allowing for trailing commas.
8) JSONLines. <https://jsonlines.org>. A more restrictive JSON format,
all JSON records must fit in one line as newline is the record
delimiter. Encoding must be UTF-8. Convention for line-oriented
processing which support JSON. E.g. for CSV replacement.
Perl moduless: JSON::Lines.
9) YAML. <https://yaml.org/>. YAML is a superset of JSON. It allows for
indentation-based syntax and various features like references, heredocs,
etc.
Perl modules: YAML, YAML::PP, among others.
ACME::CPANMODULES ENTRIES
JSON5
Author: KARUPA <https://metacpan.org/author/KARUPA>
File::Serialize::Serializer::JSON5
Author: YANICK <https://metacpan.org/author/YANICK>
JSON::Relaxed
Author: JV <https://metacpan.org/author/JV>
JSON::Diffable
Author: PHAYLON <https://metacpan.org/author/PHAYLON>
JSON::Lines
Author: LNATION <https://metacpan.org/author/LNATION>
YAML
Author: INGY <https://metacpan.org/author/INGY>
YAML::PP
Author: TINITA <https://metacpan.org/author/TINITA>
FAQ
What is an Acme::CPANModules::* module?
An Acme::CPANModules::* module, like this module, contains just a list
of module names that share a common characteristics. It is a way to
categorize modules and document CPAN. See Acme::CPANModules for more
details.
What are ways to use this Acme::CPANModules module?
Aside from reading this Acme::CPANModules module's POD documentation,
you can install all the listed modules (entries) using cpanm-cpanmodules
script (from App::cpanm::cpanmodules distribution):
% cpanm-cpanmodules -n JSONVariants
Alternatively you can use the cpanmodules CLI (from App::cpanmodules
distribution):
% cpanmodules ls-entries JSONVariants | cpanm -n
or Acme::CM::Get:
% perl -MAcme::CM::Get=JSONVariants -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n
or directly:
% perl -MAcme::CPANModules::JSONVariants -E'say $_->{module} for @{ $Acme::CPANModules::JSONVariants::LIST->{entries} }' | cpanm -n
This Acme::CPANModules module also helps lcpan produce a more meaningful
result for "lcpan related-mods" command when it comes to finding related
modules for the modules listed in this Acme::CPANModules module. See
App::lcpan::Cmd::related_mods for more details on how "related modules"
are found.
( run in 2.453 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )