2016-04-29 4 views
-1

Я пытаюсь получить определенное значение (которое является списком) из ключа на карте. Я всегда получаю [null, null]. Я пробовал все, что я нашел в Интернете.groovy: получить значение (которое является списком) из ключа на карте

// returns null 

def key = "name" 
def map = [name:[hello, there]] 
log.debug "map value ${map[key]}" 

// returns hello 

def key = "name" 
def map = [name:"hello"] 
log.debug "map value ${map[key]}" 

Как получить выше, чтобы возвращать значение в виде списка, т.е. [hello, there]?

+0

'hello' и' there', вероятно, обнуляются. Где эти переменные определены и инициализированы? –

ответ

1

Если вы установите карту со строками (а не без кавычек, как у вас есть в вашем вопросе) как так:

def key = "name" 
def map = [name:['hello', 'there']] 

Тогда map[key] возвратит список ['hello', 'there']

assert map[key] == ['hello', 'there'] 
+0

Это работает! такая ошибка noob. Как преобразовать эти значения в строки при создании самой карты? @tim_yates – rond

+0

Не знаю, вы недостаточно объясните свою ситуацию в своем вопросе. Если у вас есть 'def hello = 'hello'' и то же самое для' world', тогда ваш код должен работать –

+0

Я создаю карту в отдельном месте. Код для создания карты выглядит следующим образом: 'map = [имена, фамилии] .collect { \t \t [(it): it.numbers] \t}'. Цифры здесь не являются строками. Если я найду способ сохранить их как строки, это решение будет работать для меня. @tim_yates – rond

1

Вы Отсутствуют кавычки вокруг ваших строковых значений. Вместо

def key = "name" 
def map = [name:[hello, there]] 
log.debug "map value ${map[key]}" 

Вам нужно

def key = "name" 
def map = [name:['hello', 'there']] 
log.debug "map value ${map[key]}" 
Смежные вопросы