Я собираю серийные записи (в JArray) для отправки в Event Hub. Когда я пишу данные в концентраторы событий, кажется, что вставляют дополнительные речевые метки вокруг JSON, то есть то, что написано "{"myjson":"blah"}"
, а не {"myjson":"blah"}
, поэтому нисходящий поток у меня проблемы с чтением.Как правильно записывать JSON в Event Hub
Основываясь на этом guidance, я должен преобразовать JSON в строку, а затем использовать GetBytes, чтобы передать его в объект EventData. Я подозреваю, что моя попытка следовать этому руководству - вот моя проблема.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public static class EventDataTransform
{
public static EventData ToEventData(dynamic eventObject, out int payloadSize)
{
string json = eventObject.ToString(Formatting.None);
payloadSize = Encoding.UTF8.GetByteCount(json);
var payload = Encoding.UTF8.GetBytes(json);
var eventData = new EventData(payload)
{
};
return eventData;
}
}
Как следует элемент из JArray, содержащего сериализованные данные будет преобразован в содержимое сообщения данныеСобытия?
Код местоположение вызова - используется в дозировании ДО 256Kb посылок
public bool MoveNext()
{
var batch = new List<EventData>(_allEvents.Count);
var batchSize = 0;
for (int i = _lastBatchedEventIndex; i < _allEvents.Count; i++)
{
dynamic evt = _allEvents[i];
int payloadSize = 0;
var eventData = EventDataTransform.ToEventData(evt, out payloadSize);
var eventSize = payloadSize + EventDataOverheadBytes;
if (batchSize + eventSize > MaxBatchSizeBytes)
{
break;
}
batch.Add(eventData);
batchSize += eventSize;
}
_lastBatchedEventIndex += batch.Count();
_currentBatch = batch;
return _currentBatch.Count() > 0;
}
Как 'ToEventData()' называется? –
Добавлен вопрос. Я также рассматриваю, является ли JArray правильной структурой для массива полных JSON docs FWIW или может ли какой-нибудь другой объект лучше обрабатывать записи. –