相关疑难解决方法(0)

将bash变量传递给jq选择

我编写了一个脚本来检索某些值file.json.如果我向jq提供值,它可以工作select,但变量似乎不起作用(或者我不知道如何使用它).

#!/bin/sh

#this works ***
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="myemail@hotmail.com") | .id')
echo "$projectID"

EMAILID=myemail@hotmail.com

#this does not work *** no value is printed
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id')
echo "$projectID"
Run Code Online (Sandbox Code Playgroud)

bash json environment-variables jq

76
推荐指数
7
解决办法
6万
查看次数

Jenkins管道NotSerializableException:groovy.json.internal.LazyMap

解决:感谢S.Richmond的回答.我需要取消设置所有存储的groovy.json.internal.LazyMap类型的映射,这意味着使变量envServersobject使用后无效.

附加:搜索此错误的人可能有兴趣使用Jenkins管道步骤readJSON- 在此处查找更多信息.


我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业.然后Pipeline使用slurper解析它,我挑选出重要的信息.然后,它将使用该信息与不同的作业参数并行多次运行1个作业.

直到我添加下面的代码"## Error when below here is added"脚本运行正常.即使是该点下面的代码也会自行运行.但合并后,我得到以下错误.

我应该注意到被触发的作业被调用并且确实成功运行但是发生了以下错误并且失败了主要作业.因此,主要工作不会等待触发作业的返回.我可以尝试/捕捉周围build job:但我希望主要工作等待触发的工作完成.

谁能在这里协助?如果您需要更多信息,请告诉我们.

干杯

def slurpJSON() {
return new groovy.json.JsonSlurper().parseText(BUILD_CHOICES);
}

node {
  stage 'Prepare';
  echo 'Loading choices as build properties';
  def object = slurpJSON();

  def serverChoices = [];
  def serverChoicesStr = '';

  for (env in object) {
     envName = env.name;
     envServers = env.servers;

     for (server in …
Run Code Online (Sandbox Code Playgroud)

groovy json jenkins jenkins-pipeline

58
推荐指数
7
解决办法
5万
查看次数

使用 JQ 从 JSON 中选择特定的、任意嵌套的对象

我正在寻找有效的方法来搜索与过滤器匹配的“子对象”的大型 JSON 对象(select()我想是通过)。然而,顶级 JSON 是一个包含任意嵌套的对象,包括更简单的值、对象和对象数组。例如:

{
  "name": "foo",
  "class": "system",
  "description": "top-level-thing",
  "configuration": {
    "status": "normal",
    "uuid": "id"
  },
  "children": [
    {
      "id": "c1",
      "class": "c1",
      "children": [
        {
          "id": "c1.1",
          "class": "c1.1"
        },
        {
          "id": "c1.1",
          "class": "FINDME"
        }
      ]
    },
    {
      "id": "c2",
      "class": "FINDME"
    }
  ],
  "thing": {
    "id": "c3",
    "class": "FINDME"
  }
}    
Run Code Online (Sandbox Code Playgroud)

我有一个解决方案,它确实的一部分我想要的(并且是可以理解的):

jq -r '.. | arrays | .[] | select(.class=="FINDME"?) | .id'
Run Code Online (Sandbox Code Playgroud)

返回:

c2
c1.1
Run Code Online (Sandbox Code Playgroud)

...然而,它错过了c3,而且它改变了项目输出的顺序。此外,我希望这可以在可能非常大的 JSON …

select json nested object jq

7
推荐指数
2
解决办法
3545
查看次数

如何检查最近完成的 Codebuild 构建项目的状态?

如何使用 CLI 检查最近的 AWS Codebuild 构建项目的状态?我看到您可以查看构建详细信息,但它需要特定的构建 ID,并且汇总的构建信息没有提供有关哪个构建阶段与控制台中显示的状态相关的任何详细信息。

jq aws-codebuild

3
推荐指数
1
解决办法
2085
查看次数

针对 JQ 中选择中的多个值测试字段

我有一个要在 JQ 中选择的值列表。也就是说,我的 JSON 看起来像这样:

[
    {
        "id": "a"
    },
    {
        "id": "b"
    },
    {
        "id": "z"
    }
]
Run Code Online (Sandbox Code Playgroud)

我的值列表类似于a b c. 此列表在 bash 中存储为标量变量(非硬编码)。如何从此值列表中从 JSON 中选择相应的对象?

我已经看到其他关于使用值在 JQ 查询中选择某些内容的问题,但在此之前我还没有看到基于多个值在 JQ 中选择的示例。例如,在给定的值列表中选择 JSON。

bash json jq

0
推荐指数
1
解决办法
55
查看次数