Json jq变量似乎隐藏了原始输入
我试图解析一些json并将某些部分放入变量中。我想我还不了解变量是如何工作的 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": {
.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