当前位置: 首页 > 知识库问答 >
问题:

Jenkinsfile管道构造JSON对象并写入文件

雷方伟
2023-03-14

我想构造一个JSON对象并将内容写入文件。

最初我受此启发,尝试:

def data = [
        a:"test: ${myVar}"
    ]
    writeJSON(file: 'message1.json', json: data)

但这失败了:

无法为WriteJSONStep实例化{file=message1.json, json={a=test}}(file: String, json: JSON{},很漂亮?: int):java.lang.不可支持的操作异常:必须指定具有接口net.sf.json.JSON实现的$class

所以接下来我尝试:

def data = readJSON text: '{}'
data.a = "test: ${myVar}"
writeJSON(file: 'message1.json', json: data, pretty: 4)

现在构建通过,但文件的内容如下所示:

{
     "a":     {

        "bytes":         [

            114,

            101,

            108,

            101,

            97,

            115,

            101

            50

        ],

        "strings":         [

            "test: ",

            ""

        ],

        "valueCount": 1,

        "values": ["v1.0.2"]

    }
}

而我的意图是{“a”:“test:v1.0.2”}

我的最终目标是动态构造一个JSON对象,用一些动态数据设置一些属性,然后编写JSON文件。

是否有一些语法可用于将值分配为字符串而不是某些字节。

共有2个答案

翟渝
2023-03-14

关于您的第一次尝试,似乎有一个JSONObject。可以使用的fromObject()函数。

def data = JSONObject.fromObject([
        a:"test: ${myVar}".toString()
    ])
writeJSON(file: 'message1.json', json: data)
温嘉玉
2023-03-14

似乎一种解决方案是更改添加到映射中的代码以将指定为String

def data = readJSON text: '{}'
data.a = "test: ${myVar}" as String
writeJSON(file: 'message1.json', json: data, pretty: 4)
 类似资料:
  • 问题内容: 我想构造一个JSON对象并将内容写入文件。 原来我的灵感来自于尝试: 但这失败了: 无法为WriteJSONStep实例化{file = message1.json,json = {a = test}}(文件:字符串,json:JSON {},漂亮?:int):java.lang.UnsupportedOperationException:必须在实现中指定$ class net.sf.

  • 问题内容: 我在javascript中有一个JSON对象。我只想将JSON对象写入文本文件。到目前为止,从我遇到的情况来看,由于客户端的安全问题,无法这样做。有解决方法吗?如果最初放置一些虚拟值,是否可以修改已经存在的文件? 谢谢 问题答案: 您可以做的一件事就是将JSON设置为即时下载。 工作演示:http : //jsfiddle.net/sLq3F/ 除此之外,由于安全原因,您无法在客户端的

  • 问题内容: 我正在尝试将JSON对象写入服务器上的.json文件。我现在这样做的方式是: JavaScript: PHP: 它写得很好,并且信息似乎是正确的,但是呈现不正确。它显示为: …但是我期望这样: 为什么我会得到所有这些斜线,为什么都将它们全部放在一行? 问题答案: 您正在双重编码。无需使用JS 和 PHP 进行编码,只需在一侧进行编码, 然后 再进行一次编码。 请注意,该参数表示预期的

  • 问题内容: 在jenkinsfile,我已经通过指定的文件夹名 SparseCheckoutPaths 我想结帐。但是我却得到了整个分支结帐。 问题答案: 这是我自己的问题的答案。关于它如何工作的一些背景知识,有一个名为 sparsecheckout的 git客户端标志/配置,负责这种签出。此外,还需要一个 稀疏签出的 命名文件。 我的问题是 Jenkinsfile 的语法,正确的语法如下: 有关

  • 我试图理解“有效现代C”中关于特殊成员函数生成的第17项,所以我尝试了一些示例,并试图对一些行为进行推理。书中说: ..当我提到移动操作move构造或移动分配一个数据成员或基类时,不能保证实际会发生移动。“Memberwise移动”实际上更像Memberwise移动请求,因为未启用移动的类型(即,对移动操作不提供特殊支持的类型,例如大多数C 98遗留类)将通过其复制操作“移动”。。。此外,不会为任

  • 8.5. 构造值对象 Go有一个内建的new函数,用于在堆上为任意类型变量分配一个空间。新分配的 内存会内自动初始化为0。 例如,new(int) 会在堆上分配一个整型大小的空间, 然后初始化为0,然后返回 *int 类型的地址。 和C++中不同的 是,new是一个函数而不是运算符,因此 new int 用法是错误的。 对于字典和管道,必须用内建的make函数分配空间。对于没有初始化的字典或 管道