Azure Function(v2,.NET Core):反序列化来自流分析作业的事件中心输入

Azure Function (v2, .NET Core): Deserialize Event Hub input coming from Stream Analytics Job

我有一个 Azure 流分析作业,它将事件输出为 "Line separated" 并以 UTF8 编码。

我创建了一个由事件中心上的事件触发的 Azure 函数(v2,.NET Core)。在这种情况下,我分批处理事件:

public static async Task Run(
    [EventHubTrigger(
        "xxx",
        Connection = "xxx",
        ConsumerGroup = "xxx")
    ] EventData[] events, 
    ILogger log)

我的目标是将输入反序列化为基于 POCO class 的对象。我目前总是得到的是 "Unexpected character...".

的错误

在这种情况下反序列化的正确方法是什么?

以下方法终于奏效了:

private static List<a> DeserializeInput(EventData[] events, ILogger log)
{ 
    try
    {
        List<a> inputsDeserializedAsList = new List<a>();

        foreach (EventData eventData in events)
        {
            // Deserialize Input
            string payload = Encoding.UTF8.GetString(eventData.Body);
            log.LogInformation($"DeserializeInput: payload retrieved: {payload}...");

            DateTime enqueuedTimeUtc = (DateTime)eventData.SystemProperties.EnqueuedTimeUtc;

            using (StringReader reader = new StringReader(payload))
            {
                List<a> inputEventsAsList = new List<a>();

                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    a parsedData = JsonConvert.DeserializeObject<a>(line);
                    parsedData.EventEnqueuedUtcTime = enqueuedTimeUtc;
                    inputEventsAsList.Add(parsedData);
                }
                inputsDeserializedAsList.AddRange(inputEventsAsList);
            }
        }

        return inputsDeserializedAsList;
    }
    catch (Exception e) {
        throw new Exception("DeserializeInput: failed deserializing input...", e);
    }
}