我有一个如下的json内容,
{
"Id": "Role1",
"Result": [
{
"Sub1": 1,
"Sub2": 1,
"StrSub": "ABC"
},
{
"Sub1": 2,
"Sub2": 1,
"StrSub": "CDE"
} ],
"Other": "NA"
}
我正在尝试按以下方式打印,
Id
Result
Others
我可以通过使用jq length t1.json
来获取长度,但是使用该长度,我尝试在for循环中使用--arg index 0
来迭代json文件,但这是行不通的(jq --arg id 0 '.[$id]' t1.json
)
答案 0 :(得分:2)
假设输入已更正:
$ jq -r 'keys_unsorted[]' t1.json
Id
Result
Other
jq --arg id 0 '.[$id]' t1.json
不起作用的原因是您已将$id
指定为JSON字符串。
传递整数参数的最简单方法是使用--argjson
而不是--arg
。许多替代方法之一是使用$id|tonumber
而不是$id
。
答案 1 :(得分:0)
使用步行路径Unix实用程序 jtc
:
bash $ <t1.json jtc -w'[:]><k'
"Id"
"Other"
"Result"
bash $
如果要删除引号,请添加-qq
PS>披露:我是jtc
-用于JSON操作的shell cli工具的创建者