使用 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)