我有一个包含以下内容的Packages.json文件:

{
    "packages": {
        "pkg1":{
            "Cpu": "2",
            "Memory": "8",
            "Disk": "100"
        },
        "pkg2":{
            "Cpu": "4",
            "Memory": "16",
            "Disk": "200"
        }
    }
}

我还有一个来自另一个阶段的环境变量env.VM_PACKAGE.我想用这个Jenkins流从特定的包中获取CPU,内存,磁盘值:

stage('Parse package details') {
    steps {
        echo "Read packages JSON file"
        script {
            def props = readJSON file: "${WORKSPACE}/maintenance-vm/packages.json"
            env.PACKAGE_CPU = props['packages'].props["${env.VM_PACKAGE}"].get("Cpu")
            env.PACKAGE_MEMORY = props['packages'].props["${env.VM_PACKAGE}"].get("Memory")
            env.PACKAGE_DISK = props['packages'].props["${env.VM_PACKAGE}"].get("Disk")
        }
        echo "Cpu: ${env.PACKAGE_CPU} Memory: ${env.PACKAGE_MEMORY} Disk: ${env.PACKAGE_DISK}"
    }
}

例如,如果${env.VM_PACKAGE}的值为pkg2,则回声将写为:"Cpu: 4 Memory: 16 Disk: 200"

我试着使用单引号,双引号,${env.VM_PACKAGE}左右没有引号,但没有运气.

推荐答案

你的语法有误.try 以下几种方法.

env.PACKAGE_CPU = props['packages'][env.VM_PACKAGE]['Cpu']

Json相关问答推荐

抓取低于w jolt的对象级别

Jolt需要将缺少的值设置为空并保持相同的位置

JQ如何获取特定子元素的所有父母

如何在改装Android中将ResponseBody转换为JSONObject

使用快速json库编写json可以消除所有缩进

将不带正文的 CURL POST 转换为 RESTRequest Delphi 代码 / 为 Dropbox API /get_current_account 端点编写 Delphi 代码

如何使用jolt规范将一个对象添加到另一个对象中并删除该对象

基于JQ中另一个对象的值 Select 对象

Shell脚本空格转义

如何在linux中用jq过滤json数组?

hook到 Decodable.init() 以获得未指定的键?

Retrofit 2.0 如何解析嵌套的 JSON 对象?

将带有数据和文件的 JSON 发布到 Web Api - jQuery / MVC

在 Postgres 中向 JSON 对象添加元素

如何在 MVC4 中将 Json 字符串输出为 JsonResult?

有什么方法可以在 elasticsearch 服务器中导入 json 文件(包含 100 个文档).?

Jackson:忽略 Json 配置值

字符串格式 JSON 字符串给出 KeyError

将 JsonArray 添加到 JsonObject

如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET?