Почему служба «Сетка событий» сериализует уже сериализованные данные?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему служба «Сетка событий» сериализует уже сериализованные данные?

Сообщение Anonymous »

Я пытаюсь проникнуть в dotnet и Azure, поэтому создаю небольшое решение, которое запускает функцию Azure по http со счетчиком, который затем запрашивает заданное количество фактов о кошках из общедоступного API, сохраняет их в базе данных космоса и, если факт отсутствует в моей базе данных, отправляется событие сетки событий.
Моя проблема заключается в сериализации данных для события, а затем их десериализации в моем обработчике событий.Модель данных

Код: Выделить всё

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);
}
где dbUpdateItems — это список CatFactDatabaseModel.
Код для десериализации события

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как мне превратить эти сериализованные данные в массив с помощью php?
    Гость » » в форуме Php
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Как отправить сериализованные данные JSON в TCP/IP с помощью C#?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как отправить сериализованные данные JSON в TCP/IP с помощью C#?
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить сериализованные данные массива флажков в PHP из отправки ajax
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить сериализованные данные массива флажков в PHP из отправки ajax
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»