You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中使用JsonOutput生成JSON时如何避免私钥被添加额外反斜杠?

解决Groovy JsonOutput转义私钥换行符的问题

JsonOutput默认会转义字符串中的控制字符(比如换行符\n),这是符合JSON规范的行为,但如果你需要避免私钥里的换行符被添加额外反斜杠,可以用Groovy的RawString类型包装私钥字符串,让JsonOutput不对其进行转义。

修改后的代码如下:

import groovy.json.RawString

def private_key = '-----BEGIN PRIVATE KEY-----\nxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzx\nyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\n-----END PRIVATE KEY-----'

def test = [
    "apiAudienceURL": "https://xyz",
    "apiKey": [
        "type": "service_account",
        "private_key": new RawString(private_key)
    ]
]

def result = JsonOutput.prettyPrint(JsonOutput.toJson(test))
println(result)

执行后输出的JSON中,私钥的换行符会直接保留,不会被转义为\\n:

{
    "apiAudienceURL": "https://xyz",
    "apiKey": {
        "type": "service_account",
        "private_key": "-----BEGIN PRIVATE KEY-----
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzx
yzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz
-----END PRIVATE KEY-----"
    }
}

注意:如果你的需求只是后续解析JSON时能正确获取带换行的私钥,其实默认转义后的\\n在使用JsonSlurper解析时会自动还原为\n,完全不影响使用。只有当你需要输出的JSON文本中直接显示换行时,才需要使用RawString。

内容的提问来源于stack exchange,提问作者Shivangi Bhardwaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:05:08