【发布时间】:2019-04-14 19:59:47
【问题描述】:
我有一个结构如下的 json 文件:
{
"A": [{
"B": {
"C": [{
"D": {
"applicationNumberText": {
"value": "15570075",
"electronicText": "15570075"
},
"date": "2018-10-01",
"app": "Utility"
}
}]
}
}]
}
现在我想检索electronicText 值。一种方法是使用如下索引
jq --stream 'select(.[0][1] == "A" and .[0][2] == "B" and .[0][3] == "C") | .[1]'
但在某些情况下结构可能会有所不同,所以我想通过键值而不是索引来引用。我尝试了以下方法,但它不起作用
cat file.json | jq --stream 'select(.A|.[]. B. C|.[]. D.applicationNumberText)'
所以我想在不使用索引的情况下检索 electronicText 键。
Note:我想对大型 JSON 文件使用 stream 选项。
【问题讨论】:
-
您的第一个 jq 查询使用的键名甚至没有出现在 JSON 中。请修复。此外,问题的描述非常粗略,似乎与标题不同。请关注minimal reproducible example 并指出 .electronicText 的值是否已知为标量。
-
JSON 不是一个有效的。从 jsonlint.com 修复它
-
@Inian 感谢您的宝贵回复,我对 JSON 进行了一些更改,请通过此操作。
-
@peak 我刚刚更正了键名,请仔细阅读。感谢您的宝贵意见。