2017-10-06 698 views
0

我在使用Robot Framework将JSON文件转换为字典时出现问题。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

什么是代码的当前结果您发布? –

+0

我不认为字典正在加载到变量中。我认为该变量保持空白(空)。 –

+0

当我试图引用变量时,它认为它是一个字符串(来自json.loads代码???)。我得到'字符串索引必须是整数,而不是unicode' –

回答

2

我的印象是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