【问题标题】:How do I get all first objects of my json using jq? [duplicate]如何使用 jq 获取我的 json 的所有第一个对象? [复制]
【发布时间】:2019-04-19 14:17:55
【问题描述】:

我想获取我的 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 没有成功。

【问题讨论】:

  • 向我们展示正确的 JSON 内容,而不是不完整的结构

标签: python json jq


【解决方案1】:

你可以使用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"
]

【讨论】:

  • 谢谢! 'keys' 正是我需要的 :)
  • keys 对键进行排序。如果您希望它们按原始顺序排列,请使用keys_unsorted。两者都返回 JSON 字符串数组。
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 2023-02-23
  • 2022-10-24
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
相关资源
最近更新 更多