Json: Difference between revisions
Jump to navigation
Jump to search
(Created page with "== JSON query == Example of query: <source lang="json"> { "name" : "my_beautiful_project" } </source>") |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== References == |
|||
* [https://www.json.org/ JSON.org] |
|||
* [http://seriot.ch/parsing_json.php Parsing JSON is a Minefield] |
|||
;Tools |
|||
* [https://ravilabio.info/notes/unix/jq.html jq] — a command-line tool for manipulating JSON. |
|||
:* [https://nigeltao.github.io/blog/2020/jsonptr.html jsonptr] — same, but extra speed and safety. |
|||
* [https://github.com/tidwall/jj jj] — JSON Stream Editor (command line utility). |
|||
== Specification == |
|||
{| |
|||
|- |
|||
|width=20%| |
|||
<source lang="text"> |
|||
object |
|||
{} |
|||
{ members } |
|||
members |
|||
pair |
|||
pair , members |
|||
pair |
|||
string : value |
|||
array |
|||
[] |
|||
[ elements ] |
|||
elements |
|||
value |
|||
value , elements |
|||
</source> |
|||
|width=20%| |
|||
<source lang="text"> |
|||
value |
|||
string |
|||
number |
|||
object |
|||
array |
|||
true |
|||
false |
|||
null |
|||
string |
|||
"" |
|||
" chars " |
|||
chars |
|||
char |
|||
char chars |
|||
</source> |
|||
|width=20%| |
|||
<source lang="text"> |
|||
char |
|||
any-Unicode-character- |
|||
except-"-or-\-or- |
|||
control-character |
|||
\" |
|||
\\ |
|||
\/ |
|||
\b |
|||
\f |
|||
\n |
|||
\r |
|||
\t |
|||
\u four-hex-digits |
|||
</source> |
|||
|width=20%| |
|||
<source lang="text"> |
|||
number |
|||
int |
|||
int frac |
|||
int exp |
|||
int frac exp |
|||
int |
|||
digit |
|||
digit1-9 digits |
|||
- digit |
|||
- digit1-9 digits |
|||
frac |
|||
. digits |
|||
</source> |
|||
|width=20%| |
|||
<source lang="text"> |
|||
exp |
|||
e digits |
|||
digits |
|||
digit |
|||
digit digits |
|||
e |
|||
e |
|||
e+ |
|||
e- |
|||
E |
|||
E+ |
|||
E- |
|||
</source> |
|||
|} |
|||
== JSON query == |
== JSON query == |
||
Example of query: |
Example of query: |
||
Line 4: | Line 98: | ||
{ "name" : "my_beautiful_project" } |
{ "name" : "my_beautiful_project" } |
||
</source> |
</source> |
||
== Tips == |
|||
=== Convert CSV to JSON === |
|||
<source lang="bash"> |
|||
jq -R -r 'split(",") | {name:.[0],age:.[1]}' file.csv |
|||
</source> |
|||
== Query JSON with [https://ravilabio.info/notes/unix/jq.html jq] == |
|||
Let's consider this sample JSON: |
|||
<source lang="json"> |
|||
[ |
|||
{ |
|||
"tabs": [ |
|||
{ |
|||
"title": "foo", |
|||
"windows": [ |
|||
{ |
|||
"columns": 137, |
|||
"title": "first", |
|||
"lines": 74, |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"title": "bar", |
|||
"windows": [ |
|||
{ |
|||
"columns": 68, |
|||
"lines": 74, |
|||
"title": "one" |
|||
}, |
|||
{ |
|||
"columns": 67, |
|||
"lines": 37, |
|||
"title": "two" |
|||
}, |
|||
{ |
|||
"columns": 67, |
|||
"lines": 37, |
|||
"title": "three" |
|||
} |
|||
] |
|||
} |
|||
] |
|||
} |
|||
] |
|||
</source> |
|||
* Query the <code>lines</code> of <code>windows</code> with <code>title == "two"</code> |
|||
<source lang="bash"> |
|||
# Note the anonymous root array |
|||
jq '.[].tabs[].windows[] | select( .title == "two" ) | .lines' kitty.json |
|||
</source> |
|||
== Query JSON with Python == |
|||
See [[Python]]. |
Latest revision as of 11:04, 25 July 2023
References
- Tools
- jq — a command-line tool for manipulating JSON.
- jsonptr — same, but extra speed and safety.
- jj — JSON Stream Editor (command line utility).
Specification
object
{}
{ members }
members
pair
pair , members
pair
string : value
array
[]
[ elements ]
elements
value
value , elements
|
value
string
number
object
array
true
false
null
string
""
" chars "
chars
char
char chars
|
char
any-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits
|
number
int
int frac
int exp
int frac exp
int
digit
digit1-9 digits
- digit
- digit1-9 digits
frac
. digits
|
exp
e digits
digits
digit
digit digits
e
e
e+
e-
E
E+
E-
|
JSON query
Example of query:
{ "name" : "my_beautiful_project" }
Tips
Convert CSV to JSON
jq -R -r 'split(",") | {name:.[0],age:.[1]}' file.csv
Query JSON with jq
Let's consider this sample JSON:
[
{
"tabs": [
{
"title": "foo",
"windows": [
{
"columns": 137,
"title": "first",
"lines": 74,
}
]
},
{
"title": "bar",
"windows": [
{
"columns": 68,
"lines": 74,
"title": "one"
},
{
"columns": 67,
"lines": 37,
"title": "two"
},
{
"columns": 67,
"lines": 37,
"title": "three"
}
]
}
]
}
]
- Query the
lines
ofwindows
withtitle == "two"
# Note the anonymous root array
jq '.[].tabs[].windows[] | select( .title == "two" ) | .lines' kitty.json
Query JSON with Python
See Python.