在 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)格式替换当前时间?

如何只读取一次 JSON 并在 Robot Framework 的同一个机器人文件中多次使用它

虫师自动化测试robot Framework 框架的学习

如何定制 Robot Framework 的测试报告

机器人框架从 JSON 列表中获取

ROBOT 中的 Json 处理