嗨,我是谷歌云的新手,我想以json格式打印vm实例,但print(json.dumps(instance))
引发了一个错误:TypeError: Object of type Instance is not JSON serializable
。
我的代码如下:
import json
from google.oauth2 import service_account
from google.cloud import compute_v1
class VM:
def __init__(self, cred_json_path):
self.cred_json_path = cred_json_path
self.credentials = self.create_credentials()
self.page_size = 500
def create_credentials(self):
return service_account.Credentials.from_service_account_file(self.cred_json_path)
def list_vms(self):
client = compute_v1.InstancesClient(credentials=self.credentials)
for zone, instances in client.aggregated_list(request={"project": self.credentials.project_id, "max_results": self.page_size}):
for instance in instances.instances:
print(json.dumps(instance))
return
vm = VM("/tmp/1.json")
vm.list_vms()
有什么简单的方法可以做到这一点吗?我认为gcp-api应该有一些方法,我可以很容易地实现这一点,但我找不到。谢谢你的帮助。
终于知道如何解决这个问题了。
from google.protobuf.json_format import MessageToJson
MessageToJson(instance._pb)
这可以打印json格式的数据。