Как получить значение атрибута из переменной, содержащей содержимое ответа JSON - PullRequest
0 голосов
/ 18 сентября 2018

Я использую автоматизацию Robot Framework API.Здесь, сохраняя ответ JSON в переменной [POSTResp.content].То есть «POSTResp.content» имеет полный ответ, как указано ниже.Пожалуйста, помогите мне получить значение атрибута (например, значение referenceId) из сохраненного содержимого.

Пример ответа JSON:

{
"serviceResponseHeader": {
    "responseContext": {
        "responseCode": "MS19",
        "responseDescription": "Success",
        "serviceResponseTimeInGMT": "18 Sep 2018 16:12:43 GMT"
    },
    "requesterContext": {
        "applicationCode": null,
        "applicationSubCode": null,
        "countryCode": null,
        "requesterReferenceNumber": null,
        "requestTimeInGMT": "30 Jun 2015 11:54:49 GMT",
        "requesterUserIdentity": "23483",
        "requesterGroupIdentity": "1620",
        "requesterIpAddress": "",
        "sessionIdentity": "2536kjhfdashfkhfsab",
        "ssoSessionIdentity": "2536kjhfdashfkhfsab",
        "requesterAbbreviatedGroupName": "NEWCOMP"
    },
    "serviceContext": {
        "serviceVersionNumber": "1.0",
        "serviceCode": "30"
    }
},
"getProxyDetailResponseBody": {
    "proxyDetails": {
        "proxyType": "",
        "proxyValue": "20140005K",
        "referenceId": "PR18090000847597",
        "transactionId": "18091801657466"
    }
}

}

I 'мы пробовали следующие способы:

1) $ {json} в журнал JSON $ {POSTResp.content} true для консоли \ n ID прокси-сервера: $ {json ["proxyValue"]}

Результат: Ошибка при разрешении переменной '$ {json ["proxyValue"]} ": TypeError: строковые индексы должны быть целыми числами, а не str

2) $ {json} Оценить json.loads ($ {POSTResp.content}} json log to console \ n ID прокси-сервера: $ {json ["proxyValue"]}

Результат: сбой: SyntaxError: неожиданный EOF во время синтаксического анализа (строка 1)

1 Ответ

0 голосов
/ 18 сентября 2018

Проблемы с вашими двумя подходами:

1) вызов ключевого слова из библиотеки передает истинный аргумент (ну, похожий на правду) параметру pretty_print:

 ${json}    To JSON    ${POSTResp.content}   true

Просмотр библиотекиВ этом случае ключевое слово не возвращает объект dict, а представляет собой строку, беатифицированную версию исходного json.Это совпадает с ошибкой, которую вы получили.
Удалите аргумент "true", и он должен вернуть слово dict.

2) В Evaluate окружите переменную тройными кавычками (буквальная строка python):

${json}    Evaluate    json.loads('''${POSTResp.content}'''} 

json

Без этого фреймворк просто сбрасывал значение переменной, что вызывало синтаксическую ошибку Python.

Кстати, старайтесь не делать ваши переменные сключевые слова / названия библиотек - например, ${json} там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...