Python如何打印API响应内容查看其格式与字段值
Python打印Azure DevOps SDK响应内容的正确方法
Azure DevOps Python SDK返回的接口响应是自动生成的模型类实例,而非Python原生字典/列表,直接执行print()只会输出对象的内存地址,和JavaScript环境中默认打印可序列化对象的逻辑不同。两种环境的打印效果对比如下:
- JavaScript环境直接打印响应效果:

- Python环境直接打印响应默认输出:

你可以通过以下几种方法清晰查看响应结构和字段值:
方法1:使用SDK内置as_dict()方法(推荐)
所有Azure SDK返回的模型实例都自带as_dict()方法,可以直接将对象转换为和API返回结构完全一致的Python字典,搭配pprint模块可以输出格式化后的易读结构:
from pprint import pprint # 初始化客户端、调用接口的参考逻辑 # from azure.devops.connection import Connection # from msrest.authentication import BasicAuthentication # credentials = BasicAuthentication('', '你的个人访问令牌PAT') # connection = Connection(base_url='https://dev.azure.com/你的组织名', creds=credentials) # core_client = connection.clients.get_core_client() response = core_client.get_projects() # 打印整个响应结构 pprint(response.as_dict()) # 如果响应是分页列表,遍历列表项逐个打印 for project in response.value: pprint(project.as_dict())
这个方法输出的字段名和Azure DevOps官方API文档完全对应,不会遗漏属性,也不会带出SDK内部的冗余字段。
方法2:直接输出格式化JSON
如果需要和JavaScript环境看到的JSON结构完全一致,可以将转好的字典序列化为带缩进的JSON字符串输出:
import json response = core_client.get_projects() # indent指定缩进空格数,ensure_ascii=False避免中文被转义为Unicode编码 print(json.dumps(response.as_dict(), indent=2, ensure_ascii=False))
方法3:临时查看对象公开属性
调试阶段如果不想调用序列化方法,也可以通过对象的__dict__属性过滤出公开字段查看,注意这个方法可能会带出少量SDK内部属性,整洁度不如as_dict():
from pprint import pprint response = core_client.get_projects() # 过滤掉下划线开头的内部属性 public_fields = {k: v for k, v in response.__dict__.items() if not k.startswith('_')} pprint(public_fields)
注意:不要尝试直接打印未做转换的SDK响应对象,这些模型类默认没有实现友好的字符串格式化逻辑,只会返回类名和内存地址,无法查看实际内容。
内容的提问来源于stack exchange,提问作者noonenine
相关产品推荐
相关产品推荐

