How to get value from JSON list within Robot Framework?
If the variable ${response}
is a response object - vs just a string, the content of the payload - the most straightforward way is to call its json()
method, which returns the payload as parsed dictionary:
${the data}= Evaluate ${response.json()}
Another way is to parse the payload with json.loads()
yourself, passing the .content
attribute that stores it (this is pretty much what the .json()
does internally):
${the data}= Evaluate json.loads(${response.content}) json
And if that variable ${response}
is a string, the actual payload, then just pass it to json.loads()
:
${the data}= Evaluate json.loads($response) json
Now that you have the data as a regular dictionary, do your verifications the normal way:
Should Be Equal ${the data['interfaces'][0]['ipv4']} ${your predefined dictionary}
Tony Montana
Updated on June 30, 2022Comments
-
Tony Montana almost 2 years
As part of verification in Robot Framework, I have following data (stored as
${response}
) as get request response:{ "interfaces": [ { "name": "eth0", "status": "ready", "macAddress": "xx:xx:xx:xx:xx:xx", "ipv4": { "mode": "DHCP", "address": "127.0.0.1", "mask": "255.255.255.0", }, "ipv6": { "mode": "DISABLED", "addresses": [], "gateway": "", } } ], "result": 0 }
And I would like to get value of key
ipv4
and compare it with predefined value. I tried to use it out ofHttpLibrary.HTTP
as this will be deprecated for Robot Framework 3.1 so I would like to useEvaluate
. Will it be possible within Robot Framework?-
A. Kootstra about 5 yearsPossible duplicate of Json handling in ROBOT
-
-
Maxx about 2 yearsI get "No keyword with 'Evaluate ...' found." It seems like everyone who gives an answer about robot framework leaves out the part that would make their answer work.
-
Maxx about 2 yearsDon't answer the question if you're not going to answer the question.
-
Todor Minakov almost 2 yearsI'd be very surprised if
Evaluate
is not recognised, it's a built-in keyword, always available for usage. Are you sure you have 2 or more spaces between it & the 1st argument? If it's just one, the whole string will be parsed as the keyword name & will lead to such exception.