如何使用C#在Payload中反序列化带有事件关键字的JSON



我在Azure Function中从EventHub接收以下JSON

Event {"Id":"cfbfbc8900b2","DateTime:"2021-04-29T08:01:26","NewId":null,"UserId":null}

我需要知道如何取消这个有效载荷的序列化,因为我得到了以下错误。我已经尝试了SO的一些解决方案来取消序列化,但由于在JSON的开头保留了关键字Event,所以它们似乎都不起作用

Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: E. Path '', line 0, position 0.'

这是C#代码

foreach (EventData eventDataItem in events)
{
try
{
var eventPayload = Encoding.UTF8.GetString(eventDataItem.EventBody);
dynamic eventData;
using (StringReader reader = new StringReader(eventPayload))
{
string line;
while ((line = reader.ReadLine()) != null)
{
eventData = JsonConvert.DeserializeObject<dynamic>(line);
}
}
}
}

json中有一个错误,"DateTime应该是";DateTime";

{"Id":"cfbfbc8900b2","DateTime:"2021-04-29T08:01:26",...

您现在可以反序列化

Event data = JsonConvert.DeserializeObject<Event>(json);
public class Event
{
public string Id { get; set; }
public DateTime DateTime { get; set; }
public string NewId { get; set; }
public string UserId { get; set; }
}

相关内容