如何从JSON文件中提取字段



我是一个编程新手,但我正试图将我的注意力转移到学习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'

产生您期望的结果。