Я изо всех сил пытаюсь создать сообщение с устройства в IoTHub в правильном формате.
Я использую пакет SDK для клиента Azure (Microsoft.Azure.Devices.Client).
Для лучшего понимания давайте начнем с небольшого примера, у нас есть следующая строка:
var TableName = "table01";
var PartitionKey = "key01";
string messagePayload = $"{{\"tablename\":\"{TableName}\",\"partitionkey\":\"{PartitionKey}\"}}";
(Взято из примера Отправить устройство в облачную телеметрию) мы создаем сообщение о событии
using var eventMessage = new Microsoft.Azure.Devices.Client.Message(Encoding.UTF8.GetBytes(messagePayload))
{
ContentEncoding = Encoding.UTF8.ToString(),
ContentType = "application/json"
};
А затем отправить его в облако:
Console.WriteLine(messagePayload);
await deviceClient.SendEventAsync(eventMessage);
Вывод из строки записи, чего я и хотел в первую очередь:
{"tablename":"table01","partitionkey":"key01"}
Что я вижу в оболочке после ответа на просмотр входящих сообщений IoTHub:
{
"event": {
"origin": "WinSensorTest",
"module": "",
"interface": "",
"component": "",
"payload": "{\"tablename\":\"table01\",\"partitionkey\":\"key01\"}"
}
}
Проблема в том, что я хочу, чтобы это выглядело как код ниже или полностью без события и т. д., только строка выше.
{
"event":{
"origin":"WinSensorTest",
"module":"",
"interface":"",
"component":"",
"payload":{
"tablename":"table01",
"partitionkey":"key01"
}
}
}
Где я ошибся, как полезная нагрузка может быть в правильном формате json?
Редактировать:
Я только что попробовал то же самое на Java, с тем же результатом. Почему это не работает, или данные, видимые в оболочке, анализируются неправильно?