【问题标题】:Parsing JSON wih bash jq: Get top level strings使用 bash jq 解析 JSON:获取顶级字符串
【发布时间】:2017-11-28 22:37:49
【问题描述】:

现在我有一个类似这样的 JSON 文件:

{
    "string1":[{
        "spec1": "spec1value",
        "spec2": "spec2value"
    }],
    "string2":[{
        "spec1": "spec1value",
        "spec2": "spec2value"
    }],
    "string3":[{
        "spec1": "spec1value",
        "spec2": "spec2value"
    }]
}

我需要从这个 JSON 中检索所有最高值,即“string1”、“string2”和“string3”。但是我找不到这样做的好方法。

如果我有这样的文件格式,它会简单得多,但我想避免每个条目都有那个额外的参数:

{
    "string1":[{
        "stringName": "string1",
        "spec1":      "spec1value",
        "spec2":      "spec2value"
    }],
    "string2":[{
        "stringName": "string2",
        "spec1":      "spec1value",
        "spec2":      "spec2value"
    }],
    "string3":[{
        "stringName": "string3",
        "spec1":      "spec1value",
        "spec2":      "spec2value"
    }]
}

那我就可以这样做了:

jq -r ".[][][\"stringName\"]" file.json

关于如何以更清洁的方式解决此问题的任何建议?

【问题讨论】:

    标签: json bash key jq


    【解决方案1】:

    如果您希望它们按原始顺序作为流,请使用keys_unsorted[]; 如果您希望它们首先被排序,请使用keys[]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多