首页 > 解决方案 > Azure 流分析事件中心输出 - 收到无效对象

问题描述

使用 ASA 作业,输入作为 IoT 中心,事件中心作为输出,一个流单元和每秒 36 条消息。

ASA 将多个对象作为单个字符串发送到事件中心。

例如 - 当我通过上传示例 IoT Hub 输入 json 文件来测试 ASA 作业时,在单行中获取以下对象(输出中每行一个对象),这是预期的 - “{“assetbarcode”:“MobileGW153353803144884Asset”,“sensorruleid”:1159 "groupid":681}"

但是当启动 ASA 作业并启动 C# 事件中心接收器时,将多个对象作为单个字符串 - "{"assetbarcode":"MobileGW153353803144884Asset","sensorruleid":1159,"groupid":681} {"assetbarcode":"MobileGW153353803144884Asset"," sensorruleid":1159,"groupid":681} {"assetbarcode":"MobileGW153353803144884Asset","sensorruleid":1159,"groupid":681}"

因此它无法反序列化,因为它是无效的 json。String 不是数组或逗号分隔的对象。

引用 C# 接收器 - https://github.com/Azure/azure-event-hubs/blob/master/samples/DotNet/Microsoft.Azure.EventHubs/SampleEphReceiver/SimpleEventProcessor.cs

标签: azure-eventhubazure-stream-analytics

解决方案


如果您将输出配置为行分隔,则此输出是预期的。要反序列化,您可以逐行读取并反序列化每一行或让 JObjects 的反序列化序列。

如果您更喜欢 json 数组,请选择数组。此页面有更多详细信息。请注意,如果作业在关闭文件之前重新启动,则文件可能缺少关闭“]”


推荐阅读