Groovy: преобразовать массив JSON в строку с URL-кодом?
Я пишу приложение для SmartThings (www.smartthings.com) в собственной IDE. У меня есть поле ввода здесь, которое должно быть для ввода текста. Я прошу адрес отправления:
section("Departing From:"){
input "departFrom", "text", title: "Address?"
}
при значении Monterey, CA
значение магическим образом изменяется на массив JSON со значениями [Monterey, CA]
Я хочу передать это значение httpGET
заявление, но мне нужно URLencode
это сначала пропустить пробелы и т. д. Я пытался URLencoder
без успеха из-за массива JSON.
я пытался join(",")
без удачи, поскольку это добавляет двойные кавычки к значению.
Как я могу получить чистую Monterey%2C%20CA
URL закодировал значение из этой переменной?
** имейте в виду, что кто-то может ввести любую комбинацию чисел, пробелов и запятых в этот ввод в качестве адреса. API mapquest, который я отправляю, может обрабатывать все эти вещи, если они не имеют специальных символов, а пробелы кодируются URL.
2 ответа
Может быть, попробуйте:
def l = ['Monterey', 'CA']
assert URLEncoder.encode(l.join(', ')).replaceAll('\\+','%20') == 'Monterey%2C%20CA'
Когда дело доходит до замены +
подписаться, пожалуйста, смотрите здесь
Существуют разные типы кодирования URL, но в этом случае их два: один преобразует пробелы в%20, а другой преобразует пробелы в +.
Во-первых, вы бы использовали UriUtils:
def yourEncodedString = UriUtils.encodeUri(yourString.toString(), "UTF-8")
Во-вторых, вы бы использовали UrlEncoder:
def yourEncodedString = URLEncoder.encode(yourString.toString(), "UTF-8")
В качестве альтернативы (я думаю) вы можете использовать URLEncoder с UTF-16, чтобы получить то, что вы хотите.
Я никогда не проводил время с UriUtils, так что, надеюсь, UrlEncoder будет работать для вас.