簡體   English   中英

如何轉義 json slurper 處理響應中的變量類型值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM