我是一个编程新手,但我正试图将我的注意力转移到学习JAVA, JSON和JQ上。
说到这里,我已经创建了以下JSON文件:
{
"users":
[
{"Firstname": "Rolo",
"Lastname": "Car",
"Hobbies": ["Metalcore", "concerts", "beach"],
"friends": [
{"Firstname":"Nitsuki",
"Lastname": "Saixx"
},
{"Firstname":"Confesora",
"Lastname": "Kahlan"
}
]
},
{"Firstname":"Ernest",
"Lastname": "Vast"
"Hobbies": ["Barista", "Strategy games", "RPG games"],
"friends": [
{"Firstname":"Diana",
"Lastname": "Vast"
},
{"Firstname":"Pat",
"Lastname": "Vanberg"
}
]
},
{"Firstname":"Juls",
"Lastname": "Santana",
"Hobbies": ["Sew", "Watch Gossip shows", "Foodie"],
"friends": [
{"Firstname":"Laura",
"Lastname": "Reed"
},
{"Firstname":"Sandy",
"Lastname": "Vast"
}
]
}
我试图得到以下结果:
"Rolo"
"Ernest"
"Juls"
当我输入以下JQ命令
cat file.json | jq "[].Firstname"
我得到错误
jq: error (at <stdin>:56): Cannot index array with string "Firstname"
有什么建议我可能做错了吗?非常感谢您的宝贵时间!
您首次发布的json中的几个问题:
"Lastname": "Vast"
后面需要逗号- 您需要关闭
users
数组(在末尾添加]
),然后关闭整个对象(在末尾添加}
)来完成对象
这个命令可以工作:
cat test.json | jq '.users[].Firstname'
你需要告诉jq你想从哪个数组中获得Firstname
的值(在你的例子中是users
数组),因为初始输入是一个对象,所以不能通过而不是包含[]
Firstname
属性值的集合来遍历。
。Users是一个数组,因此在修复了这些明显的错误之后,您将发现:
jq '.users[].Firstname'
产生您期望的结果。