JSON
JavaScript Object Notation
A subset of [[YAML]], no comments! (But use JSMin
) Also see [[TOML]]
.c.f.
- [[JWT]] JSON Web Token
- [[jq]] A command line tool for JSON manipulation
- [[gron]] Make JSON grepable!
Though, oddly enough, not JavaScript.
No string in JavaScript can contain a literal
U+2028
or aU+2029
.
Placeholder Data
There is some JSON PlaceHolder Data here & here
TODO: I should implement some of the myself.
Comments
JSON can’t include comments, but you can pre-process with JSmin to remove them.
Install JSmin
brew install jsmin
Create some JSON with a comments
cat << EOF > ./jsonWithComments.json
{
"My Beta": "DEADBEEF2116aecbaefe18d98171e2c", // This is a comment
"My Commerce Nightly": "6DEADBEEF771248cba6aff5f4c972c779",
"My Commerce Test": "DEADBEEFe7df43cfaad8fa81f2eaba39",
"My Experience Nightly": "DEADBEEFc5dd45ee8d52e0019f0752be",
"My Experience Test": "DEADBEEF34ec5133ab2df8adc22d0ae7", // Another (Illegal) comment
"My Nightly": "DEADBEEF7485072eada656d6125682f8",
"My Test": "DEADBEEF5c11a4990aad6cf8f1c476df"
}
EOF
cat ./jsonWithComments.json
JSON without comments
cat ./jsonWithComments.json | jsmin
Make it pretty (again)
cat ./jsonWithComments.json | jsmin | python -mjson.tool
Verification
Use python -mjson.tool
for basic JSON verificationa and pretty printing.
Given:
/dev/null
cat /dev/null | python -mjson.tool
No JSON object could be decoded
echo $?
1
{}
echo "{}" | python -mjson.tool
{}
echo $?
0
{"aa": "bb", "bb": "cc"}
echo '{"aa": "bb", "bb": "cc"}' | python -mjson.tool
{
"aa": "bb",
"bb": "cc"
}
echo $?
0
{"aa": "bb", "bb": "cc",}
with trailing comma
echo '{"aa": "bb", "bb": "cc",}' | python -mjson.tool
Expecting property name: line 1 column 25 (char 24)
echo $?
1