Разбор 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("/")]​​​)​
Другие вопросы по тегам