在 Robot 框架中解析 JSON 输出 [TypeError:预期的字符串或缓冲区]
Posted
技术标签:
【中文标题】在 Robot 框架中解析 JSON 输出 [TypeError:预期的字符串或缓冲区]【英文标题】:Parsing JSON output in Robot framework [TypeError: expected string or buffer] 【发布时间】:2021-03-06 05:21:48 【问题描述】:我有一个这样的 JSON 输出:
"output":
"ParentKey":
"key": "9b92e663a66c0cc1",
"id": "uid=26"
我正在尝试获取key的内容,即:9b92e663a66c0cc1
假设 $output 有这个 JSON 内容/数据..
这是我试过的代码:
$values= Evaluate json.loads($output) json
$response Evaluate json.loads($values['output']['ParentKey']) json
$key set variable $response['ParentKey']['key']
[Return] $key
我使用的是旧版机器人(低于 v3.2)
但是,我遇到了这样的错误
评估表达式 'json .loads (RF_VAR_values ['output']['ParentKey'])' 失败:TypeError:预期字符串 或缓冲
如何在不出现上述错误的情况下获取密钥?
谢谢!!!
【问题讨论】:
第二个 json.loads & 评估是不必要的,因为一旦你将 json 加载到 $valiues 中,值已经是字典,而不是字符串..你很可能可以删除第二行并更改尝试行“响应”到“值” 我认为这不起作用,“输出”成为键,其余文件中的所有内容都成为“输出”键的单个值。所以我认为你不能直接访问这些值! 你试过了吗?答案突出了这一点,至少对我有用 这个数据和你上一个问题的数据不一样。 @rasjani 是正确的,你不需要调用json.loads
两次。
成功了,谢谢你们!!
【参考方案1】:
*** Settings ***
*** Variables ***
$our_json "output": "ParentKey": "key": "9b92e663a66c0cc1", "id": "uid=26"
*** Test Case ***
Test JSON
$values= Evaluate json.loads($our_json) json
Log To Console $values
$key set variable $values['output']['ParentKey']['key']
Log To Console OUR KEY: $key
输出:
==============================================================================
Test
==============================================================================
Test JSON .'output': 'ParentKey': 'key': '9b92e663a66c0cc1', 'id': 'uid=26'
..OUR KEY: 9b92e663a66c0cc1
Test JSON | PASS |
------------------------------------------------------------------------------
Test | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
【讨论】:
以上是关于在 Robot 框架中解析 JSON 输出 [TypeError:预期的字符串或缓冲区]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?