Robot Framework - 将JSON转换为字典

时间:2017-10-06 14:36:50

标签: python json robotframework

我在使用Robot Framework将JSON文件转换为字典时遇到问题。

*** Variables ***
${MY_DATA_TABLE VALUES}
${MY_JSON_FILE}    *path_to_JSON\test.json*


*** Keywords ***
Converting a JSON File
    ${MY_DATA_TABLE_VALUES_TEMP}   get file   ${MY_JSON_FILE}
    ${MY_DATA_TABLE_VALUES}    evaluate  json.loads('''${MY_DATA_TABLE_VALUES_TEMP}''')    json
    ${MY_DATA_TABLE_VALUES}=       convert to dictionary   ${MY_DATA_TABLE_VALUES}
    [Return]  ${MY_DATA_TABLE_VALUES}

我的印象是json.loads函数将返回一个字符串而不是字典,这就是我尝试转换为字典的原因。

我打算在更多RF关键字中访问变量$ {MY_DATA_TABLE_VALUES}。

任何指导都将不胜感激。 感谢

1 个答案:

答案 0 :(得分:3)

  

我的印象是json.loads函数将返回一个字符串而不是一个字典

这是不正确的。它返回一个字典。您无需致电convert to dict,如果没有它,您的代码就可以正常工作。

这是一个有效的例子:

*** Settings ***
Library  Collections

*** Variables ***
${MY_DATA_TABLE_VALUES_TEMP}  {"foo": "this is foo", "bar": "this is bar"}

*** Keywords ***
Converting a JSON File
    ${MY_DATA_TABLE_VALUES}    evaluate  json.loads('''${MY_DATA_TABLE_VALUES_TEMP}''')    json
    [Return]  ${MY_DATA_TABLE_VALUES}

*** Test Cases ***
Example
    ${data}=  converting a json file
    ${datatype}=  evaluate  str(type($data))
    should be equal  ${datatype}  <type 'dict'>
    should be equal  ${data['foo']}  this is foo