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
相关产品推荐
相关产品推荐

