解析JSON wih bash jq:获取顶级字符串

时间:2017-11-28 22:37:49

标签: json bash key jq

现在我有一个类似于此的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

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

1 个答案:

答案 0 :(得分:3)

如果您希望将它们作为原始订单中的流,请使用keys_unsorted[]; 如果您希望首先对它们进行排序,请使用keys[]