2017-10-06 78 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