如何使用jq获取json的所有第一个对象?

时间:2018-11-16 11:35:47

标签: python json jq

我想获取巨大(超过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失败。

1 个答案:

答案 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"
]