python - 如何使用 jq 获取我的 json 的所有第一个对象?
问题描述
我想获取我的 json 文件的第一个对象(不知道它是否是正确的名称),该文件很大(超过 120k 行),所以我无法手动解析它。
格式是这样的:
"datanode": [
{
"isWhitelisted": true,
"metricname": "write_time",
"seriesStartTime": 1542037566944,
"supportsAggregation": true
},
{
"isWhitelisted": true,
"metricname": "dfs.datanode.CacheReportsNumOps",
"seriesStartTime": 1542037501137,
"supportsAggregation": true,
"type": "COUNTER"
},
{
"isWhitelisted": true,
"metricname": "FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.EstimatedCapacityLostTotal",
"seriesStartTime": 1542037495521,
"supportsAggregation": true,
"type": "GAUGE"
},
],
"toto": [
....
我需要的是提取这个:datanode,toto等。只有名字。
你能帮我吗 ?
我尝试使用 jq 没有成功。
解决方案
你可以使用jq的keys
功能
jq 'keys' file.json
将来尝试改进使用哪些词来描述 json 数据的不同部分。您在文本中询问了对象,但实际上是指键。
这个问题的更合适的标题应该是:“如何使用 jq 获取 json 数据的所有顶级键?” 有了这个更正确的措辞,您会发现已经回答了类似这样的问题:How to get key names from JSON using jq
还要提供完整有效的示例结构和预期结果,如下所示:
{
"one_key": {
"foo": "bar"
},
"another_one": {
"bla": "bla"
}
}
和期望的结果:
[
"another_one",
"one_key"
]
推荐阅读
- c++ - 调试 c++ 运行时错误的好方法是什么?
- model-view-controller - 如何获取 MySQL 数据并在 CODEIGNITER 中的控制器上使用它
- android - Firebase 验证错误且不会变为真,重置后密码也不会更新
- javascript - TypeError:React__default.forwardRef 不是函数
- spotfire - 现场火分析师中的重叠日期
- javascript - CodeIgniter a.tag onclick if else 事件
- python - 如何建立自引用的多对多关系
- css - 如何在 Angular 应用程序的垫子抽屉组件中隐藏滚动条
- regex - 如果可选括号之间不存在任何内容,则不匹配
- json - 使用 Ansible 从 json 内容中获取特定的 dict 列表