解析JSON后向Azure Event Hub发送Blob数据遇序列化问题求助
解决Azure Logic App中JArray无法发送到Event Hub的问题
核心问题
Event Hub的Send事件操作不支持直接发送Newtonsoft.Json.Linq.JArray类型,且转换过程中若处理不当会触发空值解析错误。
可行解决方案
1. 先校验数组非空
添加条件判断步骤,检查body('Parse_JSON')?['records']是否为非空数组,避免后续转换因空值触发Event received is null错误。
2. 正确转换数组格式
Event Hub支持JSON字符串或Base64编码的二进制负载,推荐两种可靠转换方式:
- 方式一:序列化为标准JSON字符串发送
使用json()函数还原标准JSON结构,避免string()生成的转义字符串导致解析失败,表达式:@{json(string(body('Parse_JSON')?['records']))} - 方式二:转为Base64编码的二进制负载
先将数组转为标准JSON,再编码为Base64,适合二进制传输场景,表达式:@{base64(json(string(body('Parse_JSON')?['records'])))}
3. 指定内容类型
在Send Event操作的Content Type字段设置为application/json,确保Event Hub正确识别负载格式。
备选方案:逐个发送事件
若records数组中的每个元素是独立业务事件,可使用For Each循环遍历数组,将单个record作为事件发送到Event Hub,既规避数组类型问题,也更贴合Event Hub的事件粒度设计。
内容的提问来源于stack exchange,提问作者Qeller White
相关产品推荐
相关产品推荐

