You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell将Azure EventHub的Avro文件转换为可用JSON

解决Azure Automation Runbook中解析EventHub捕获Avro文件Body的问题

核心问题分析

Read-Avro返回的PSCustomObject里,Body字段是字节数组格式,并非直接可用的JSON字符串,必须先完成字节到字符串的转换,再解析为JSON对象才能正常使用。

具体实现步骤

1. 导入AvroTools模块

确保Runbook开头导入模块(需先在Azure Automation账户中部署该模块):

Import-Module AvroTools

2. 读取Avro文件并转换Body内容

假设已将存储账户中的Avro文件下载到Runbook临时路径,执行以下代码:

# 读取Avro文件记录
$avroRecords = Read-Avro -Path "C:\Temp\eventhub-capture-file.avro"

# 遍历每条记录提取并解析Body
foreach ($record in $avroRecords) {
    # 将字节数组转为UTF-8字符串
    $bodyString = [System.Text.Encoding]::UTF8.GetString($record.Body)
    
    # 解析为可直接操作的JSON对象
    $bodyJson = $bodyString | ConvertFrom-Json
    
    # 示例:访问JSON属性
    Write-Output "事件ID: $($bodyJson.EventId)"
    Write-Output "事件时间: $($bodyJson.Timestamp)"
}

3. 处理编码兼容问题

若UTF-8转换后出现乱码,尝试切换编码方式:

# 改用Unicode编码转换
$bodyString = [System.Text.Encoding]::Unicode.GetString($record.Body)

验证示例

假设Body原始JSON格式为:

{"EventId": "EH-20240520-001", "Action": "DataSubmitted", "Timestamp": "2024-05-20T14:20:00Z"}

执行代码后,$bodyJson会成为可直接访问属性的PSCustomObject,你可根据业务需求提取字段或进行后续处理。


内容的提问来源于stack exchange,提问作者Xavier Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:54:52