我正在尝试通过机器人框架验证我的 swagger-server 代码。服务器处理程序正在返回一个字典(或 json 对象?)。机器人框架尝试验证响应,但出现此错误。
失败:JSONDecodeError:需要用双引号引起来的属性名称:第 1 行第 2 列(字符 1)
问题是响应有单引号而不是双引号(或者响应没有被识别为 json)所以 json.loads 失败。
我尝试将内容类型和 mimetype header 添加为“application/json”。试过 flask 的 jsonify。
这是返回响应的代码部分。
def grants_post(project, GrantRequest, Accept=None, Content_Type=None, Authorization=None):
# code that creates a large dictionary called rsp.
grant_uri_id = str(uuid.uuid4())
AsyncGrantResponses[grant_uri_id] = rsp
print(rsp['output'])
return rsp['output'], 201, {'location': "sol003/grant/" + project + "/grant/v1/grants/" + grant_uri_id , 'mimetype' : "application/json" }
这是机器人框架的结果。模式验证后,它执行 json.loads。由于数据很大,所以在黑白中使用了“.......”。
Create a new Grant - Synchronous mode
| FAIL | Evaluating expressionjson.loads('''{'extVirtualLinks': [{'vimConnectionId': 'vimAccount', 'extCps':........................... 'id': '718bb9a2-37dd-4238-a393-7936a8b53086'}''')
failed: JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
我认为预期的输出应该在数据中使用双引号而不是单引号。
最佳答案
问题出在机器人测试套件代码上,我更改了这一行,
${json} = evaluate json.loads('''${result}''') json
到
${json} = evaluate json.loads(json.dumps(${result})) json
现在它验证正常。
关于python - 来自 swagger-server 的 JSON 响应在单引号中收到,机器人框架验证失败,因为 json.loads 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128628/