Игнорировать пробелы при сравнении со значениями из httpResponse в Groovy - PullRequest
0 голосов
/ 11 октября 2018

Я написал скрипт Groovy для извлечения значения города из карты HTTP Response, где fruit должен быть значением, полученным в переменной f, а color - значением, полученным в переменной c.Предположим, что значения f и c правильно получены с помощью некоторого метода.Если вы внимательно посмотрите в ответе HTTP, в начале выделен лишний пробел цвета «Красный», а в конце выделен лишний пробел цвета «желтый».Есть также дополнительные пробелы в названиях фруктов.Это мешает моему сравнению.Как я могу убедиться, что пробелы в начале и в конце слов в HTTP-ответе игнорируются при сравнении?

{
    "userInformation": {
        "Name": "John",
        "Location": "India"
    },
    "details": [
        {
            "fruit": "Apple  ",
            "color": " Red",
            "city": "New Delhi",
            "luckyNumber": 10
        },
        {
            "fruit": "Banana ",
            "color": "yellow ",
            "city": "Goa",
            "luckyNumber": 12
         }
         ]
         }

Вот код, который я использую -

def f = execution.getVariable("Fruits") 
def c = execution.getVariable("Colors") 
def cityName =httpResponse.json.details.find { it.fruit == f  && it.color == c }?.city

1 Ответ

0 голосов
/ 11 октября 2018

Предполагая, что s ниже - это предоставленный вами фрагмент JSON, затем рассмотрите (полный пример здесь ):

def json = new groovy.json.JsonSlurper().parseText(s)
def f = 'Apple'
def c = 'Red'

def trimCompare = { a, b ->
    a.trim() == b.trim()
}

def cityName = json.details
                   .find { trimCompare(it.fruit,f) && trimCompare(it.color,c) }
                  ?.city
assert 'New Delhi' == cityName
...