我在使用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}。
任何指导都将不胜感激。 感谢
答案 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