Jq: Difference between revisions

From wikinotes
Line 34: Line 34:
<blockquote>
<blockquote>
Neither [[json]] nor <code>jq</code> support comments.<br>
Neither [[json]] nor <code>jq</code> support comments.<br>
You could pre-process the object to strip them, however.
It's hacky, but you could pre-process the object to strip them, however.


If you'll never use <code>#</code> in keys/values you could do the following:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
echo '{
echo '{
   "one": 1, # foo bar baz
  // syntax-highlight as javascript
   # description of key
 
   "two": 2
   "local_path": "/home/you", // your home dir
 
   // a network path
   "netwk_path": "//10.1.0.5/music"
}' \
}' \
   | sed 's/#.*$//' \
   | sed 's?//[^"]*$??'
   | jq '.one'
   | jq '.one'
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Comments -->
</blockquote><!-- Comments -->
</blockquote><!-- Usage -->
</blockquote><!-- Usage -->

Revision as of 15:31, 28 August 2021

parse json on the commandline.

Documentation

official docs https://stedolan.github.io/jq/manual/
homepage https://stedolan.github.io/jq/

Usage

Basics

# print w/ syntaxhighlighting
echo '{"one": 1, "two": {"a": "A"}}' | jq

# get key ["one"]
echo '{"one": 1, "two": {"a": "A"}}' | jq '.one'    # 1

# get nested-key ["two"]["a"]
echo '{"one": 1, "two": {"a": "A"}}' | jq '.two.a'  # "A"

# get list item at index 1
echo '["a", "b", "c"]' | jq '.[1]'                  # "b"

Comments

Neither json nor jq support comments.
It's hacky, but you could pre-process the object to strip them, however.

echo '{
  // syntax-highlight as javascript

  "local_path": "/home/you", // your home dir

  // a network path
  "netwk_path": "//10.1.0.5/music"
}' \
  | sed 's?//[^"]*$??'
  | jq '.one'