如何迭代到 json 对象并使用机器人框架获取其数组

How to iterate to json object and gets its array using robot framework

成功存入数组列表

我想迭代 Locationlist 并获取其国家/地区类型和 bikeList 自行车类型和文本。

    {
"addedToList": {
    "locationList": [
        {
            "countryType": "US"
            "LineList": [
                {
                    "Text": "thequickbrownfoxjumps over the lazy dog"
                }
            ]
        }
    ],
    "bikeList": [
        {
            "BikeType": "road"
            "LineList": [
                {
                    "Text": "text"

                }
            ]
        }
    ]
},
"addedLine": "2"
}

使用JSON [https://goessner.net/articles/JsonPath/][查询选择器] $..locationList[?(@.countryType)].countryType过滤所选对象下的所有国家/地区类型

如果想要纯robotframework,可以查看robotframework-jsonlibrary

用于访问您的 json 文件所在国家/地区的示例机器人案例:

*** Settings ***
Library     JSONLibrary
Library     Collections

*** Test Cases ***
Test For Json
    ${json_obj} =   Load JSON From File     example.json
    ${countries} =  Get Value From Json     ${json_obj}     $..countryType
    @{countries} =  Convert To List         ${countries}
    FOR     ${country}     IN      @{countries}
        Log To Console      ${country}
    END

此外,如果您熟悉使用 python 扩展机器人的关键字,您也可以使用 python 编写自己的关键字。

您也可以在没有 JSONLibrary 的情况下执行此操作,只需通过 Evaluate Keyword

使用 json.loads

*** Variables ***
${MY_JSON}    {"addedToList":{"locationList":[{"countryType":"US","LineList":[{"Text":"thequickbrownfoxjumps over the lazy dog"}]}],"bikeList":[{"BikeType":"road","LineList":[{"Text":"text"}]}]},"addedLine":"2"}

*** Test Cases ***
Test For Json
    ${json}    Evaluate   json.loads('''${MY_JSON}''')    json
    FOR   ${loc_list}    IN    @{json['addedToList']['locationList']}
        Log    countryType: ${loc_list["countryType"]}  console=True
    END
    FOR   ${bike_list}    IN    @{json['addedToList']['bikeList']}
        Log    BikeType: ${bike_list["BikeType"]}  console=True
    END