我有一个由科学仪器创建的层次结构深的JSON对象,因此该文件有些大(1.3MB),人们不易读取。我想获取JSON对象的键列表,直到一定深度为止。例如,给定这样的输入对象
{
"acquisition_parameters": {
"laser": {
"wavelength": {
"value": 632,
"units": "nm"
}
},
"date": "02/03/2525",
"camera": {}
},
"software": {
"repo": "github.com/username/repo",
"commit": "a7642f",
"branch": "develop"
},
"data": [{},{},{}]
}
我想要这样的输出。
{
"acquisition_parameters": [
"laser",
"date",
"camera"
],
"software": [
"repo",
"commit",
"branch"
]
}
这主要是为了能够枚举JSON对象中的内容。从仪器处理完JSON对象后,它们开始出现歧义:例如,某些对象可能具有字段,例如.frame.cross_section.stats.fwhm
,而其他字段可能具有.sample.species
,因此能够在命令行上查询JSON对象将很方便。
以下应该完全满足您的要求
jq '[(keys - ["data"])[] as $key | { ($key): .[$key] | keys }] | add'
使用上面描述的输入,将提供以下输出:
{
"acquisition_parameters": [
"camera",
"date",
"laser"
],
"software": [
"branch",
"commit",
"repo"
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句