Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Json jq变量似乎隐藏了原始输入_Json_Variables_Jq - Fatal编程技术网

Json jq变量似乎隐藏了原始输入

Json jq变量似乎隐藏了原始输入,json,variables,jq,Json,Variables,Jq,我试图解析一些json并将某些部分放入变量中。我想我还不了解变量是如何工作的 Json: 然后使用这个jq: .resources[] | select(.type == "Microsoft.ApiManagement/service/apis") as $apis | { types: [.type], apis: $apis} 我明白了: { "types": [ "Microsoft.ApiManagement/service/apis" ], "apis": {

我试图解析一些json并将某些部分放入变量中。我想我还不了解变量是如何工作的

Json:

然后使用这个jq:

.resources[] | select(.type == "Microsoft.ApiManagement/service/apis") as $apis | { types: [.type], apis: $apis}
我明白了:

{
  "types": [
    "Microsoft.ApiManagement/service/apis"
  ],
  "apis": {
    "type": "Microsoft.ApiManagement/service/apis"
  }
}
当我预料到这一点时:

{
  "types": [
    "Microsoft.ApiManagement/service/apis",
    "Microsoft.ApiManagement/service/apis/schemas"
  ],
  "apis": {
    "type": "Microsoft.ApiManagement/service/apis"
  }
}

根据

表达式exp为$x |。。。平均值:对于表达式的每个值 exp,使用整个原始输入运行管道的其余部分,然后 将$x设置为该值。因此,作为一个foreach的功能 循环


这让我认为.type应该从原始集合返回,而不是从我存储在$API中的过滤结果返回。断开连接在哪里?

选择
隐藏了一些输入

要生成预期的输出,最简单的方法是根本不使用变量。例如,您可以简单地编写:

.resources[].type

稍后的目标是从json中的不同区域生成结果,因此我将收集如下变量:选择(.type==“Microsoft.ApiManagement/service/API”)作为$API选择(.type==“Microsoft.ApiManagement/service/API/schemas”)作为$schemas选择(.type==“Microsoft.ApiManagement/service/API/operations/tags”)作为$operationTags,在最后我希望用{$apis,$schemas}中的变量构建一个对象……etcI建议按照指导原则提出一个新的SO问题。
.resources[].type