[英]How to fetch JSON content values dynamically using JSON slurper in groovy
[英]How to escape json slurper processing the variable type values in response
我有如下所示的 json 回復
{ events": [
{
"documentService": {
"key": null,
"wsdlLocation": "${ATOKEN}://${BTOKEN}:${CTOKEN}/somesrc/ItemServiceV2?WSDL",
},
"documentTransform": null
}
]
}
我有下面的 groovy 腳本
parseText( response ) here response is above json 該腳本的主要目的只是列出響應中的 wsdlLocation
def jsonSlurper = new JsonSlurper()
Map parsedJson = jsonSlurper.parseText( response )
def eventsList= parsedJson.get("events")
def noOfeventnoWsdl =0;
def noOfeventyesWsdl =0;
for( def ievent: eventsList){
if(ievent.documentService != null){
noOfeventyesWsdl++
log.info ievent.documentService.wsdlLocation.toString()
}else{
noOfeventnoWsdl++
}
}
結果的執行是
==> 信息:://:/somesrc/ItemServiceV2?WSDL
反而
==> INFO:: ${ATOKEN}://${BTOKEN}:${CTOKEN}/somesrc/ItemServiceV2?WSDL 或而
ATOKEN 是 https
BTOKEN 是主機名
CTOKEN是端口
我也可以接受下面的輸出
==>信息:: https://somehost:1234/somesrc/ItemServiceV2?WSDL
我只想要 output,或者不擴展參數,或者如果有一種方法可以在 jsonSlurper 上下文中注入 ATOKEN、BTOKEN、CTOCKEN,這也很好。
請幫我。
JsonSlurper
不會替換或評估美元符號表達式。 因此,我假設您擁有的 JSON 字符串已在源文件中定義,並且您遇到的是GString
替換表達式。 如果您希望將${expression}
保留在 Json 文本中,您需要像這樣轉義美元符號:
"wsdlLocation": "\${ATOKEN}://\${BTOKEN}:\${CTOKEN}/somesrc/ItemServiceV2?WSDL",
另一種選擇是將其從源文件中提取出來,這樣它就不會被評估為GString
,並將其移動到適當的文件中:
File file = new File("/path/to/file/example.json")
def json = new JsonSlurper().parse( file )
如果您執行上述操作,則無需轉義 json 中的${}
表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.