我想获取巨大(超过12万行)的json文件的第一个对象(不知道它的名称是否正确),所以我无法手动对其进行解析。
格式如下:
"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失败。
答案 0 :(得分:2)
您可以使用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"
]