根据类型使用jq解析json

时间:2017-07-03 01:03:12

标签: arrays json bash parsing jq

我想根据它的类型解析json,因为它有时会变化。如果json是一个数组,我需要得到第一个元素,或者如果它不是我只需要那个元素!以下是我尝试使用的更简单的版本。

#!/bin/bash

word='[0,1]'
word=$(echo $word | jq 'if type=="array" then "'$word[0]'" else "'$word'" end')
echo $word

它输出"[0,1][0]",因为我预期将传递条件分配给变量,这只是0.因为在下面的情况下它只是打印了#34;是"。

#!/bin/bash

word='[0,1]'
word=$(echo $word | jq 'if type=="array" then "yes" else "no" end')
echo $word

为什么会有差异以及如何实现前者?

1 个答案:

答案 0 :(得分:3)

您可以使用.[0]返回第一个数组项:

echo "$word" | jq 'if type=="array" then .[0] else . end'