如何在Robot Framework中获取JSON数组长度?遇KeyError报错
Robot Framework获取JSON数组长度报错解决
问题场景
执行以下Robot Framework代码时,第一行解析JSON正常,但获取数组长度时触发KeyError:
${json_object} evaluate json.loads('''${sn_booking_payload}''' , strict=False) json ${answers_count} Get Length ${json_object["$.preBookAnswers.answers[0]"]}
报错信息:
Resolving variable '${json_object["$.preBookAnswers.answers[0]"]}' failed: KeyError: '$.preBookAnswers.answers[0]'
目标JSON片段(需获取preBookAnswers下answers数组的长度):
"preBookAnswers": { "answers": [ { "entityId": "2bfd67b0-a315-4dd1-b3e1-ce1d417e9cf9", "userInput": "", "itemIds": [], "answers": [ { "item": "Customer Meeting", "value": "", "description": "" } ], "customFieldType": "QUESTION", "questionDisplayText": "Reason for Travel" }, { "entityId": "ec376e47-b7d7-47f5-811d-90430eae02f8", "userInput": "", "itemIds": [], "answers": [ { "item": "J123", "value": "", "description": "" } ], "customFieldType": "QUESTION", "questionDisplayText": "DP Code" } ], "preBookQuestionResponseId": "" }
错误原因
json.loads解析后得到的${json_object}是Python字典对象,不支持JSONPath语法($.preBookAnswers.answers[0]是JSONPath写法)。代码中把JSONPath字符串当成字典的key去访问,自然会触发KeyError。
修正方案
直接用Python字典的嵌套访问语法,逐层获取目标数组后再取长度:
方案1:分步获取
${json_object} evaluate json.loads('''${sn_booking_payload}''' , strict=False) json # 先取出answers数组 ${answers_array} evaluate ${json_object["preBookAnswers"]["answers"]} # 再获取数组长度 ${answers_count} Get Length ${answers_array}
方案2:直接链式访问
${json_object} evaluate json.loads('''${sn_booking_payload}''' , strict=False) json ${answers_count} Get Length ${json_object["preBookAnswers"]["answers"]}
两种方式都能正确拿到answers数组的长度(示例中为2)。
内容的提问来源于stack exchange,提问作者Christian Dayao Corp
相关产品推荐
相关产品推荐

