如何计算Robot框架中JSON有效负载中特定KEY的出现次数?

时间:2018-10-31 10:42:01

标签: json search robotframework

当前,我想运行一个for循环。但是我不知道我的清单有什么限制。因此,在这种情况下,我想计算一个特定KEY的出现次数accountAccountId,它是JSON格式的列表。如何计算JSON数据中KEY的出现次数?

{"cardAccountList":[
{
"accountId": "1234",
},
{
"accountId": "1111"
}]} 

1 个答案:

答案 0 :(得分:1)

您想要执行的操作可以在Robot Framework中完成,但是如果您遇到的现实问题更加复杂,请考虑使用自定义Python关键字。仅仅因为您可以,并不总是意味着您应该这样做。

在下面的json文件中,我在"accountId": "1234"之后删除了逗号。它从文件加载json,然后将其转换为对象(字典/列表/字典),然后循环浏览列表以检查子字典中是否存在accountId键。计算找到它的时间。

json.json

{"cardAccountList":[
    {
    "accountId": "1234"
    },
    {
    "accountId": "1111"
    }
 ]
} 

并使用以下机器人代码:

*** Settings ***
Library    OperatingSystem    
Library    Collections    

*** Test Cases ***
TC
    ${json_string}    Get File        ./json.json
    ${json_object}    evaluate        json.loads('''${json_string}''')    json    
    ${count}          Set Variable    ${0}

    ${key_count}    Get Length    ${json_object["cardAccountList"]}

    :FOR    ${item}    IN    @{json_object["cardAccountList"]}
    \    ${status}    Run Keyword And Return Status    
    \                 ...        Dictionary Should Contain Key    ${item}     accountId
    \    
    \    ${count}     Set Variable If    ${status}    ${count+1}    ${count}

    Log To Console    \nCount of accountId is: "${count}"

生成控制台日志:

==============================================================================
TC                                                                    
Count of accountId is: "2"
| PASS |
------------------------------------------------------------------------------
Folder.Json                                                           | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed