Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bashjq解析JSON:获取顶级字符串_Json_Bash_Key_Jq - Fatal编程技术网

使用bashjq解析JSON:获取顶级字符串

使用bashjq解析JSON:获取顶级字符串,json,bash,key,jq,Json,Bash,Key,Jq,现在我有一个类似以下内容的JSON文件: { "string1":[{ "spec1": "spec1value", "spec2": "spec2value" }], "string2":[{ "spec1": "spec1value", "spec2": "spec2value" }], "string3":[{ "spec1": "spec1value",

现在我有一个类似以下内容的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

关于如何以更干净的方式处理此问题,有什么建议吗?

如果您希望它们以原始顺序作为流,请使用
键\u unsorted[]

如果希望首先对它们进行排序,请使用
键[]

如果希望它们以原始顺序作为流,请使用
键_unsorted[]
; 如果要先对它们进行排序,请使用
键[]