Azure BlobClient 未将 json 正确写入存储
Azure BlobClient not writing json correctly to Storage
我有一个来自 API 响应的 json 存储在变量中。
当我打印这个变量时,我得到:
print(json)
{"items": [{"id": "123", "name": "A"}, {"id": "456", "name": "B"}], "count": 2}
print(type(json))
<class 'dict'>
我正在尝试将此 var 作为 blob 上传到 Azure Blob 容器,例如:
blob_name = 'test.json'
blob_url = f"{account_url}/{container_name}/{blob_name}"
sa_credential = DefaultAzureCredential()
blob_client = BlobClient.from_blob_url(
blob_url=blob_url,
credential=sa_credential
)
blob_client.upload_blob(json)
一切顺利,至此,容器中创建了一个文件,然而,文件内容为:
items=id&items=name&items=id&items=name&count=2
我期望的位置:
{"items": [{"id": "123", "name": "A"}, {"id": "456", "name": "B"}], "count": 2}
有什么想法吗?
upload_blob
只能取字符串、字节或IO对象
实例作为参数。该文档没有指定 data
参数应该是什么类型。但是从 source code data
键入为 Union[Iterable[AnyStr], IO[AnyStr]]
def _upload_blob_options( # pylint:disable=too-many-statements
self, data, # type: Union[Iterable[AnyStr], IO[AnyStr]]
其中 AnyStr
is a type variable defined as AnyStr = TypeVar('AnyStr', str, bytes)
。
因此,解决此问题的一种方法是传递 JSON 字符串而不是 Python 字典。
blob_client.upload_blob(json.dumps(json))
我有一个来自 API 响应的 json 存储在变量中。
当我打印这个变量时,我得到:
print(json)
{"items": [{"id": "123", "name": "A"}, {"id": "456", "name": "B"}], "count": 2}
print(type(json))
<class 'dict'>
我正在尝试将此 var 作为 blob 上传到 Azure Blob 容器,例如:
blob_name = 'test.json'
blob_url = f"{account_url}/{container_name}/{blob_name}"
sa_credential = DefaultAzureCredential()
blob_client = BlobClient.from_blob_url(
blob_url=blob_url,
credential=sa_credential
)
blob_client.upload_blob(json)
一切顺利,至此,容器中创建了一个文件,然而,文件内容为:
items=id&items=name&items=id&items=name&count=2
我期望的位置:
{"items": [{"id": "123", "name": "A"}, {"id": "456", "name": "B"}], "count": 2}
有什么想法吗?
upload_blob
只能取字符串、字节或IO对象
实例作为参数。该文档没有指定 data
参数应该是什么类型。但是从 source code data
键入为 Union[Iterable[AnyStr], IO[AnyStr]]
def _upload_blob_options( # pylint:disable=too-many-statements
self, data, # type: Union[Iterable[AnyStr], IO[AnyStr]]
其中 AnyStr
is a type variable defined as AnyStr = TypeVar('AnyStr', str, bytes)
。
因此,解决此问题的一种方法是传递 JSON 字符串而不是 Python 字典。
blob_client.upload_blob(json.dumps(json))