Моя проблема заключается в сериализации данных для события, а затем их десериализации в моем обработчике событий.Модель данных
Код: Выделить всё
public class CatFactDatabaseModel
{
[JsonProperty("id")]
public string? Id;
[JsonProperty("category")]
public string? Category;
[JsonProperty("value")]
public string? Value;
[JsonProperty("valueHash")]
public string? ValueHash;
}
Код: Выделить всё
foreach (var item in dbUpdateItems)
{
var i = JsonConvert.SerializeObject(item);
log.LogInformation($"SERIALIZED ITEM: {i}");
var e = new EventGridEvent("add-catFact", "add-catFact", "1.0", i);
await collector.AddAsync(e);
}
Код для десериализации события
Код: Выделить всё
public static void Run([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log)
{
var any = JsonConvert.DeserializeObject(eventGridEvent.Data.ToString());
var data = JsonConvert.DeserializeObject(any.ToString());
log.LogInformation($"Added message was {data.Value}");
}
Почему мне нужно десериализовать EventGridEvent дважды?
Я пытался пропустить сериализацию при создании события, но тогда я просто получаю пустые данные в событии.
Если я десериализую только один раз в CatFactDatabaseModel, я получаю ошибки. Если я десериализую без типа, она станет экранированной строкой.
Я пытался прочитать данные как JObject вместо EventGridEvent, но с дополнительными шагами получилось то же самое.
p>
Я пытался десериализовать с помощью
Код: Выделить всё
var data = eventGridEvent.Data.ToObjectFromJson();
Это единственный вариант, когда получился реальный, непустой объект типа CatFactDatabaseModel, но я не думаю, что это так должно быть.
Я думаю, что на самом деле ошибка связана с созданием событий, но я не смог найти решение ни в документации, ни в Google.
Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/720 ... lized-data