You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RobotFramework接口测试:如何从JSON响应中获取嵌套键值

从嵌套JSON中提取指定值的Robot Framework方案

嘿,刚接触Robot Framework和Python遇到嵌套JSON取值的问题太正常啦,我来帮你一步步搞定从这个响应里拿到"tom"的方法!

首先,假设你已经用RequestLibrary发送请求并拿到了响应,第一步先把响应转换成Robot能直接处理的JSON对象,用Get Response Json关键字就能搞定:

${response_json}=    Get Response Json

接下来给你两种常用的取值方案,按需选择就行:

方法1:通过索引直接取值(适合元素位置固定的场景)

你的JSON里Key2是一个数组,目标对象是数组里的第二个元素(Robot里列表索引从0开始,所以索引是1),直接通过路径就能拿到name值:

${target_name}=    Set Variable    ${response_json}[Key2][1][name]
Log    提取到的名字:${target_name}

不过这种方法有个小局限:如果数组里元素的顺序发生变化,就会取错值,所以更稳妥的是用下面的循环查找法。

方法2:循环遍历数组查找(灵活可靠,适配元素位置变化)

如果不确定目标元素在数组里的位置,或者需要根据id等条件匹配,就遍历Key2里的每个对象,找到符合条件的name:

${target_name}=    Set Variable    ${EMPTY}
:FOR    ${item}    IN    @{response_json}[Key2]
\    Run Keyword If    '${item}[name]' == 'tom'    Set Variable    ${target_name}    ${item}[name]
\    Exit For Loop If    '${target_name}' != '${EMPTY}'

Log    找到的目标名字:${target_name}

要是你需要忽略大小写(比如想匹配"Tom"但JSON里是小写的"tom"),把判断条件改成下面这样就行:

Run Keyword If    '${item}[name]'.lower() == 'tom'.lower()    Set Variable    ${target_name}    ${item}[name]

另外,如果你想用上Python的简洁写法,也可以用Evaluate关键字写一段小代码,效率很高:

${target_name}=    Evaluate    next(item['name'] for item in ${response_json}['Key2'] if item['name'].lower() == 'tom'.lower())
Log    提取到的名字:${target_name}

这段代码用生成器表达式遍历数组,直接返回第一个匹配的name值,非常省心。


内容的提问来源于stack exchange,提问作者mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:39:50