在 Robot 框架中解析 JSON 输出 [在论坛中尝试了大多数选项]
Posted
技术标签:
【中文标题】在 Robot 框架中解析 JSON 输出 [在论坛中尝试了大多数选项]【英文标题】:Parsing JSON output in Robot framework [Tried most options in the forum] 【发布时间】:2021-03-04 04:31:41 【问题描述】:我有一个这样的 JSON 输出:
":output":
"response":" \"ParentId\" : 125, \"ParentKey\" : \"key\" : \"9aqews-uwdguwdw8-9uw8\", \"identity\" : \"key_ID=674\" "
我正在尝试获取key的内容,即:9aqews-uwdguwdw8-9uw8
这里有一些尝试:
------------------------------------------------------
$json_data Parse Json $output
Log $json_data["output"]["response"]
Log $json_data["output"]["response"][0][0:10]
------------------------------------------------------
$json= Convert To Dictionary $values
$j_keys= Get Dictionary Keys $json
Log $j_keys
------------------------------------------------------
$values= Evaluate json.loads($output) json
Log $values['output']['response'][1]
-----------------------------------------------------
$KeySP= Get Substring $values "key" ","
Log $keySP
------------------------------------------------------
#$parkeydict= $values['output']['response']
#$keyspacedict= $parkeydict['ParentKey']
#Log $keyspacedict['key']
------------------------------------------------------
我尝试了其他几个步骤、可能性和关键字, 我能解析的最好的方法是直到 "Log $json_data["output"]["response"]" 从'response'返回数据。
即使我转换为 Dict 并访问“键”,它也会失败,我认为“响应”之后的进一步数据完全存储为值。
有人可以帮助/指导我如何捕获“关键”变量中的数据吗?
提前致谢!
【问题讨论】:
关键字Parse Json
从何而来?
导入HTTP库的时候来的
【参考方案1】:
第一个问题是你尝试使用['output']
,但是key是:output
。
第二个问题是“response”键的值不是字典,它是一个看起来像字典的字符串。在尝试从中提取值之前,您必须将其转换为字典,假设它确实是一个格式正确的 json 字典,而不仅仅是一个可能看起来像字典的字符串。
这适用于我在问题中提供的确切数据:
$values= Evaluate json.loads($output)
$response= Evaluate json.loads($values[':output']['response'])
$key= set variable $response['ParentKey']['key']
should be equal $key 9aqews-uwdguwdw8-9uw8
注意:如果您使用的机器人版本早于 3.2,则需要将json
作为Evaluate
命令的最后一个参数包含在内,以便机器人知道导入模块。从 3.2 及更高版本开始,表达式中使用的模块会自动导入。
【讨论】:
感谢高亮,实际代码只有 ['output']。我对您提供的解决方案进行了一些调试。我们需要在评估后指定名称“json”。如果我们没有添加它,它会给出“失败:NameError: name 'json' is not defined”。感谢您的解决方案。 “我们需要在评估后指定名称 'json'。” - 这仅适用于早于 3.2 的机器人版本。来自Evaluate
关键字的官方文档:“从Robot Framework 3.2开始,表达式中使用的模块将自动导入”
啊,我猜我的组织使用的是旧版本!也许这就是我无法弄清楚的原因!
"output": "ParentKey": "key": "9b92e6638-c5f7a66c0cc1", "id": "uid=260" Hi @Bryan 我们如何获取密钥空间这个输出?谢谢!!!以上是关于在 Robot 框架中解析 JSON 输出 [在论坛中尝试了大多数选项]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?