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

如何在Robot Framework中从字典提取值并返回元组列表?

在Robot Framework中从字典提取值并生成元组列表的实操方案

嘿,我来帮你搞定这个需求!针对你给出的JSON结构,咱们可以分几步在Robot Framework里实现提取指定字段并返回元组列表的目标,下面是具体的操作方法:

第一步:先把JSON转成可操作的字典对象

首先得把你的JSON字符串解析成Robot能处理的字典。这里有两种常用方式:

方式1:用BuiltIn库结合Python的json模块

如果不想额外导入库,直接用BuiltIn的Evaluate关键字就行:

# 假设你的JSON内容存在变量${json_str}里
${parsed_dict}=    Evaluate    json.loads('''${json_str}''')    json

方式2:用JsonLibrary库(更直观)

先在Settings里导入JsonLibrary,然后调用解析关键字:

*** Settings ***
Library    JsonLibrary

# 解析JSON字符串
${parsed_dict}=    Load JSON From String    ${json_str}

第二步:取出products列表

从解析后的字典里,咱们要先拿到_embedded下的products数组,这是咱们要处理的核心数据:

# 用Robot原生的Get From Dictionary关键字
${products_list}=    Get From Dictionary    ${parsed_dict}    _embedded.products

# 或者用Python的取值方式,更灵活
${products_list}=    Evaluate    ${parsed_dict}["_embedded"]["products"]

第三步:生成元组列表

这一步有两种写法,你可以根据自己的习惯选:

写法1:用Python列表推导式(简洁高效,推荐)

一行代码就能搞定,直接提取每个product里的id和Name组成元组,再收集成列表:

# 这里可以根据需求替换成你要提取的其他字段,比如securityType
${tuple_list}=    Evaluate    [(item["id"], item["Name"]) for item in ${products_list}]

写法2:用Robot原生循环(更易读,适合新手)

如果不想写Python代码,用Robot的循环关键字一步步来:

# 先创建一个空列表用来存元组
${tuple_list}=    Create List

# 遍历每个product项
FOR    ${item}    IN    @{products_list}
    # 提取当前项的id和Name
    ${product_id}=    Get From Dictionary    ${item}    id
    ${product_name}=    Get From Dictionary    ${item}    Name
    # 创建元组
    ${product_tuple}=    Create Tuple    ${product_id}    ${product_name}
    # 把元组加到列表里
    Append To List    ${tuple_list}    ${product_tuple}
END

完整示例代码

把上面的步骤整合起来,给你一个可直接运行的完整测试用例:

*** Settings ***
Library    BuiltIn
Library    JsonLibrary

*** Test Cases ***
Extract Product Tuple List
    # 模拟你的JSON内容(实际场景可以从接口响应或文件读取)
    ${json_str}=    Catenate    SEPARATOR=\n
    ...    { "_embedded" : { "products" : [ 
    ...    { "id" : "BMHY2IZB", "Name" : "ANR", "securityType" : "type1", "_links" : { "self" : { "href" : "https://test.com/v1/products/BMHY2IZB" }, "relatedproducts" : { "href" : "https://test.com/v1/products/BMHY2IZB/related" } } }, 
    ...    { "id" : "FXDNZBW", "Name" : "STREPLC", "securityType" : "ANV", "_links" : {} } 
    ...    ] } }
    
    # 解析JSON为字典
    ${parsed_dict}=    Load JSON From String    ${json_str}
    
    # 获取products列表
    ${products_list}=    Get From Dictionary    ${parsed_dict}    _embedded.products
    
    # 生成元组列表
    ${result_tuple_list}=    Evaluate    [(p["id"], p["Name"]) for p in ${products_list}]
    
    # 打印结果验证
    Log    提取到的元组列表:${result_tuple_list}
    Log List    ${result_tuple_list}

小提示

  • 字段名要和JSON里的完全一致哦!比如JSON里是Name(首字母大写),就不能写成name,否则会取不到值
  • 如果需要提取其他字段,比如securityType,只需要修改推导式里的键名就行,比如(item["id"], item["securityType"])
  • 列表推导式的写法执行效率更高,代码也更简洁,优先推荐这种方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:17:12