簡體   English   中英

groovy從字符串中提取值

[英]groovy extract value from string

我從服務器響應中得到了一個字符串:

responseString:"{"session":"vvSbMInXHRJuZQ==","age":7200,"prid":"901Vjmx9qenYKw","userid":"user_1"}"

然后我做:

responseString[1..-2].tokenize(',')

得到:

[""session":"vvSbMInXHRJuZQ=="", ""age":7200", ""prid":"901Vjmx9qenYKw"", ""userid":"user_1""]

get(3)得到了:

""userid":"user_1""

我需要的是user_1,反正我真的可以得到它嗎? 我被困在這里,其他json方法也得到類似的結果,如何刪除外面的“”?

謝謝。

如果從responseStr提取正確的JSON,則可以使用JsonSlurper ,如下所示:

def s = 'responseString:"{"session":"vvSbMInXHRJuZQ==","age":7200,"prid":"901Vjmx9qenYKw","userid":"user_1"}"'

def matcher = (s =~ /responseString:"(.*)"/)
assert matcher.matches()
def responseStr = matcher[0][1]

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def json = jsonSlurper.parseText(responseStr)
assert "user_1" ==  json.userid

此代碼可以幫助您獲得用戶ID。

def str= 'responseString:"{:"session":"vvSbMInXHRJuZQ==","age":7200,"prid":"901Vjmx9qenYKw","userid":"user_1","hdkshfsd":"sdfsdfsdf"}'
def match = (str=~ /"userid":"(.*?)"/)
log.info match[0][1]

此模式可以幫助您從字符串中獲取所需的任何值。 嘗試將用戶ID替換為年齡,您將獲得

def match = (str=~ /"age":"(.*?)"/)

@Michael代碼也是正確的。 只是您已經澄清了您想要特定的用戶名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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