Разбор JSON-объекта в Groovy
Я пытаюсь написать сценарий Groovy, который выполняет вызов API REST и получает объект JSON, затем мне нужно извлечь конкретную строку из этого JSON и проверить, соответствует ли она другой строке, которую я предоставляю в сценарии.
я сделал все до раздела сравнения,
строка, которую я получаю из JSON выглядит
[AAAAAA/BBBBBB/CCCCCC/file.txt]
и это мой Groovy скрипт:
/*Import Section*/
//--------------//
groovy.json.*
/*Var Declaration*/
//---------------//
String errMessage = "There were no Junit tests impacted in this PR,
Comparison is: "
String scssMessage = "There were Junit tests impacted in this PR,
Comparison is: "
usr= "USERNAME"
pass= "PASSWORD"
pr_num = 92
String validPath = "AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE"
def copmarison = !false
/*REST API call*/
//------------//
url= "http://{$usr}:
{$pass}@XX.XXX.X.XX:PPPP/rest/api/1.0/projects/XX/repos/TTTTT/pull-
requests/+{$pr_num}/changes?changescope"
process = [ 'bash', '-c', "curl ${url}" ].execute()
process.waitFor()
/*JSON parsing*/
//------------//
def info = new JsonSlurper().parseText(process.text)
def path = info.values.path.toString
/*Impacted JUNIT verifycation*/
//---------------------------//
if(path==validPath){
println ("$scssMessage"+"Valid"+"\n")
comparison=true
}else{
println ("$errMessage"+"Not Valid"+"\n")
comparison=!false
}
Я уверен, что мое сравнение не является хорошим, и я ищу, чтобы сравнить и найти, если часть моего "пути" содержится в моем "validPath".
например, следующий случай означает истину:
AAAAAA/BBBBBB/CCCCCC/file.txt
содержалась в:
AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE
и мне нужно найти способ сделать это сравнение
пожалуйста помоги
1 ответ
Решение
Если я правильно понимаю ваш вопрос, все, что вам нужно проверить, это путь к вашему файлу с указанным путем. В этом случае это будет работать:
// you should already have these; including here for clarity
def file = "AAAAAA/BBBBBB/CCCCCC/file.txt"
def path = "AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE"
return path.contains(file[0..file.lastIndexOf("/")])