使用 Python 将最初为 json 的 avro 文件转换回 json
Convert an avro file that was originally a json back to json with Python
所以我正在尝试读取一个 JSON 文件,该文件通过 HTTP POST 发送到事件中心,该事件中心捕获数据并将其转换为 Azure Blob 存储中的 Avro 文件格式,现在我想再次下载该文件并使用 Python 将其转换回 JSON 格式。
使用 JSON 序列化程序是执行此操作的唯一方法吗?
初始JSON格式
{
"id": 1,
"number": "111111111",
"payload": {
"intial": "This is a example",
"BoxId": 2,
"PersonId": 2,
"GUID": "1s3q1d-s546dq1-8e22e",
"borderId": 2,
"ServiceId": 2,
"Lat": -63.546547,
"Lon": -63.546547,
"TimeStamp": "2021-03-18T08:29:36.758Z",
"Recording": "azezaerazre",
"Env": "TEST"
},
"operator": 123456,
"sender": "MSD",
"binary": 1,
"sent": "2021-03-29T08:29:36.758Z"
}
下载 Avro 文件后,您应该可以使用 fastavro
并执行以下操作将记录输出为 Avro JSON:
from fastavro import reader, json_writer
with open("json_file.json", "w") as json_file:
with open("avro_file.avro", "rb") as avro_file:
avro_reader = reader(avro_file)
json_writer(json_file, avro_reader.writer_schema, avro_reader)
所以我正在尝试读取一个 JSON 文件,该文件通过 HTTP POST 发送到事件中心,该事件中心捕获数据并将其转换为 Azure Blob 存储中的 Avro 文件格式,现在我想再次下载该文件并使用 Python 将其转换回 JSON 格式。 使用 JSON 序列化程序是执行此操作的唯一方法吗?
初始JSON格式
{
"id": 1,
"number": "111111111",
"payload": {
"intial": "This is a example",
"BoxId": 2,
"PersonId": 2,
"GUID": "1s3q1d-s546dq1-8e22e",
"borderId": 2,
"ServiceId": 2,
"Lat": -63.546547,
"Lon": -63.546547,
"TimeStamp": "2021-03-18T08:29:36.758Z",
"Recording": "azezaerazre",
"Env": "TEST"
},
"operator": 123456,
"sender": "MSD",
"binary": 1,
"sent": "2021-03-29T08:29:36.758Z"
}
下载 Avro 文件后,您应该可以使用 fastavro
并执行以下操作将记录输出为 Avro JSON:
from fastavro import reader, json_writer
with open("json_file.json", "w") as json_file:
with open("avro_file.avro", "rb") as avro_file:
avro_reader = reader(avro_file)
json_writer(json_file, avro_reader.writer_schema, avro_reader)