#json #parameter-passing #spock
#json #передача параметров #spock
Вопрос:
Я работаю со следующим json в тесте spock, где podCastId является динамическим значением:
private buildPodCast(long podCastId) {
String jsonString = '''
{
"id": ${podCastId},
"lang": "en",
"updated": "2019-04-03T19:48:29Z",
"premium": false,
"headline": "The Lowe Post",
"description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
"thumbnails": {
"light": {
"href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
"width": 500,
"height": 500
}
}
}
'''
return JsonUtilKt.transformToJsonNode(jsonString)
}
Моя проблема в том, что я должен передать параметр podCastId в значении id, но в том виде, в котором он есть сейчас, json не принимает значение параметра.
Я борюсь с этим тестом, есть идеи? Спасибо
Ответ №1:
Следующий фрагмент кода также работает нормально — нет необходимости в конкатенации, интерполяция строк (которая работает для """
и не для '''
) выполняет свою работу:
def buildPodCast(long podCastId) {
"""
{
"id": ${podCastId},
"lang": "en",
"updated": "2019-04-03T19:48:29Z",
"premium": false,
"headline": "The Lowe Post",
"description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
"thumbnails": {
"light": {
"href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
"width": 500,
"height": 500
}
}
}
"""
}
buildPodCast(2)
Комментарии:
1. Вы должны объяснить разницу между
'''
и"""
в Groovy, тогда это было бы более полезно.2. @rasilvap: Я предлагаю отменить ваш собственный ответ и вместо этого принять этот. Это правильное решение, ваше — обходной путь.
3. Спасибо @kriegaex!!
Ответ №2:
Я использовал конкатенацию строк:
private buildPodCast(long podCastId) {
String jsonString = '''
{
"id": ''' podCastId ''',
"lang": "en",
"updated": "2019-04-03T19:48:29Z",
"premium": false,
"headline": "The Lowe Post",
"description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
"thumbnails": {
"light": {
"href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
"width": 500,
"height": 500
}
}
}
'''
return JsonUtilKt.transformToJsonNode(jsonString)
}