#c# #json #azure-functions
Вопрос:
мне поручено проанализировать предупреждения azure и извлечь соответствующую информацию из предупреждений azure. Существует ли какой-либо пакет nuget, который анализирует предупреждения azure и извлекает группу ресурсов/подписку/имя ресурса и сведения о предупреждениях ? Вот пример формата оповещения
{ «schemaId»: «Azuremonitorcommon», «данные»: { «основы»: { «Предупреждение»: «/подписки/63b6a1c5-3552-4676-8073-c31e2641f787/поставщики/Microsoft.Управление предупреждениями/оповещения/7cf70adc-c221-467c-bcfe-bab9e33d98b2», «Предупреждение»: «AlertMetricCPUPercentage», «серьезность»: «Sev0», «Тип сигнала»: «Показатель», «Состояние монитора»: «Уволен», «Служба мониторинга»: «Платформа», «Параметры оповещения»: [ «/subscriptions/63b6a1c5-3552-4676-8073-c31e2641f787/resourcegroups/bridge/providers/microsoft.compute/virtualmachines/vm01» ], «Элементы конфигурации»: [ «vm01» ], «originAlertId»: «63b6a1c5-3552-4676-8073-c31e2641f787_microsoft.insights_metricalerts_AlertMetricCPUPercentage_-1419778843», «firedDateTime»: «2021-05-21T18:20:57.1495223 Z», «описание»: «если процент процессора меньше 10%», «Существенная конверсия»: «1.0», «alertContextVersion»: «1.0» }, «alertContext»: { «свойства»: null, «Тип условия»: «MultipleResourceMultipleMetricCriteria», «условие»: { «Размер окна»: «PT5M», «allOf»: [ { «Метрическое имя»: «Процент процессора», «Метрическое пространство»: «Microsoft.Предложение Compute/virtualMachines», «оператор»: «меньше, чем», «порог»: «10», «timeAggregation»: «максимум», «размеры»: [], «metricValue»: 0.95, «webTestName»: нулевой } ], «windowStartTime»: «2021-05-21T18:12:44.375 з», «windowEndTime»: «2021-05-21T18:17:44.375 з» } } } }
Комментарии:
1. Это просто json, вы можете использовать JSON.net
Ответ №1:
Как указано выше, это просто данные JSON, поэтому вам просто нужно создать класс C#, сопоставленный с интересующими вас свойствами, а затем десериализовать данные в объект этого класса.
Вот фрагмент из документов Microsoft по десериализации данных JSON
using System;
using System.Collections.Generic;
using System.Text.Json;
namespace DeserializeExtra
{
public class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureCelsius { get; set; }
public string Summary { get; set; }
public string SummaryField;
public IList<DateTimeOffset> DatesAvailable { get; set; }
public Dictionary<string, HighLowTemps> TemperatureRanges { get; set; }
public string[] SummaryWords { get; set; }
}
public class HighLowTemps
{
public int High { get; set; }
public int Low { get; set; }
}
public class Program
{
public static void Main()
{
string jsonString =
@"{
""Date"": ""2019-08-01T00:00:00-07:00"",
""TemperatureCelsius"": 25,
""Summary"": ""Hot"",
""DatesAvailable"": [
""2019-08-01T00:00:00-07:00"",
""2019-08-02T00:00:00-07:00""
],
""TemperatureRanges"": {
""Cold"": {
""High"": 20,
""Low"": -10
},
""Hot"": {
""High"": 60,
""Low"": 20
}
},
""SummaryWords"": [
""Cool"",
""Windy"",
""Humid""
]
}
";
WeatherForecast weatherForecast =
JsonSerializer.Deserialize<WeatherForecast>(jsonString);
Console.WriteLine($"Date: {weatherForecast.Date}");
Console.WriteLine($"TemperatureCelsius: {weatherForecast.TemperatureCelsius}");
Console.WriteLine($"Summary: {weatherForecast.Summary}");
}
}
}
// output:
//Date: 8/1/2019 12:00:00 AM -07:00
//TemperatureCelsius: 25
//Summary: Hot
А вот собственно статья
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-5-0