Скажем, исходный текст (json) хранится в переменной ${source data}
:
${source data}= Evaluate json.loads("""${source data}""") json
# the variable ${source data} is now a python dictionary - the same as the original json, but only - accessible as dictionary in robotframwork
${all data members}= Set Variable ${source data['data']}
${user_phone}= Create Dictionary
:FOR ${member} IN @{all data members} # iterate through the 'data', each ${member} is a dictionary in the source list
\ ${name}= Get From Dictionary ${member} name # will assign to the variable ${name} the value of the key 'name'; if there is no such key - the keyword will fail
\ Log The user ${name} has a mobile phone: ${member['mobile_phone']} # Will print "The user John has a mobile phone: False", "The user Jim has a mobile phone: True"
\ Set To Dictionary ${user_phone} ${name} ${member['mobile_phone']} # will fill-in a dictionary in the form "name": boolean_does_the_person_has_phone
Этот пример кода с комментариями показывает, как вы можете работать с объектами json / dictionary в роботизированной структуре.
Ключевое слово Evaluate в строке 1 запускает произвольный код Python (его первый аргумент, который вызывает метод loads()
модуля json); 2-й аргумент - любые дополнительные библиотеки, которые нужно импортировать, например, json в нашем случае.
4-я строка Set Variable
показывает синтаксис расширенной переменной - в этом случае, зная, что source data
- это словарь, получая значение этого ключа. В конце выполнения этой строки переменная all data members
является списком, который находится внутри ключа данных «json».
Строка 8 начинает цикл над тем же списком; переменная member
будет содержать значение каждого члена списка на каждой итерации.
В строке 9 используется другой (более ортодоксальный) способ получения значения ключа словаря - с помощью ключевого слова Получить из словаря из библиотеки коллекций.
Строка 10 регистрирует сообщение, используя обычные (name
) и расширенные синтаксические (member['mobile_phone']
) переменные.
И в строке 11 создается словарная запись, где name
используется в качестве ключа, а логическое member['mobile_phone']
в качестве значения (если ключ с таким именем уже существует - он перезаписывается) , Это ключевое слово снова в библиотеке Collections .