Json jq-如何遍历不同名称的键

Json jq-如何遍历不同名称的键,json,key,iteration,jq,Json,Key,Iteration,Jq,我有一个JSON,看起来像这样 { "keyword1": { "identifier1": 16 }, "keyword2": { "identifier2": 16 } } 我需要循环遍历关键字以获取标识符,但不确定我是否使用了正确的术语。看起来很简单,但是因为关键字的名称都不一样,我不知道如何处理这个问题。这个问题的原始标签是jq,所以这里有一个jq解决方案: .[] | keys[] 例如,使用问题中所示的输入: $ jq '.[] | keys[]'

我有一个JSON,看起来像这样

{
  "keyword1": {
    "identifier1": 16
  },
  "keyword2": {
    "identifier2": 16
  }
}

我需要循环遍历关键字以获取标识符,但不确定我是否使用了正确的术语。看起来很简单,但是因为关键字的名称都不一样,我不知道如何处理这个问题。

这个问题的原始标签是jq,所以这里有一个jq解决方案:

.[] | keys[]
例如,使用问题中所示的输入:

$ jq '.[] | keys[]' input.json

"identifier1"
"identifier2"

要按照键名在JSON对象中出现的顺序检索键名,请使用未排序的键。

我来这里是希望从我的JSON中整理出一组键,我发现两个功能非常方便。有三个函数可用于创建\u条目、从\u条目和带\u条目。可以按键或值筛选值,如下所示:

JSON_数据仓库 { 字段:{ 第一:空, 二:二,, 第三名:三名 } } ' echo$JSON_DATA | jq'{字段:。字段|带有_entriesselect.value!=null和.key!=third}' 输出:

{
  "fields": {
    "second": "two"
  }
}

我认为这样做会很好:

jq '. | to_entries | .[].key'

或者,如果要从变量中获取值:

JSON_DATA={main:{k1:v1,k2:v2}}
result=$(jq -n "$JSON_DATA" | jq '.main | to_entries | .[].value' --raw-output)
echo $result

##outputs: v1 v2

请指定您希望输出的外观。就像peakNeat的答案一样,我不知道您可以将对象转换为具有[]的数组。使用to_条目非常有用!