Azure BlobClient上传Python dict到Blob Storage时JSON格式异常如何解决
原因说明
你传入upload_blob方法的参数是Python dict类型,Azure Storage SDK 处理非字节、非文件类的入参时,默认会按application/x-www-form-urlencoded格式编码为表单数据,这就是你看到上传后内容变成&拼接的键值对格式的原因,并不是预期的JSON结构。
解决方法
上传前先将Python字典序列化为标准JSON格式的内容即可,修改后的代码参考如下:
# 首先导入标准库json模块,注意不要和你存储数据的变量名冲突 import json from azure.storage.blob import BlobClient from azure.identity import DefaultAzureCredential # 原有变量定义部分无需修改 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 ) # 新增:将字典序列化为UTF-8编码的JSON字节流 # 这里加ensure_ascii=False是避免内容里的中文被转义为Unicode编码,无中文可删除 json_content = json.dumps(json, ensure_ascii=False).encode('utf-8') # 上传序列化后的内容,指定content_type方便后续访问时识别为JSON格式 # overwrite=True表示允许覆盖同名Blob,不需要覆盖可删除该参数 blob_client.upload_blob(json_content, overwrite=True, content_type='application/json')
补充提示:你当前存储JSON数据的变量名为json,和Python标准库的json模块重名,建议修改为json_data之类的自定义名称,避免后续调用模块时出现命名冲突异常
内容的提问来源于stack exchange,提问作者Swifting
相关产品推荐
相关产品推荐

