Если вы действительно хотите свойства десериализованного JSON, вы можете делать то, что говорит документация, хотя вы можете быть удивлены выводом:
dynamic evtPc1 = JsonConvert.DeserializeObject(json);
PropertyInfo[] properties = evtPc1.GetType().GetProperties();
for (int i = 0; i < properties.Length; i++)
{
var prop = properties[i];
if (prop.GetIndexParameters().Length == 0)
Console.WriteLine("{0} ({1}): {2}", prop.Name,
prop.PropertyType.Name,
prop.GetValue(evtPc1));
else
Console.WriteLine("{0} ({1}): <Indexed>", prop.Name,
prop.PropertyType.Name);
}
Но если вы хотите получить только свойства из JSON самого , это немного сложнее (не уверен, что этот код является оптимальным, хотя). Обратите внимание, что этот код не охватывает случай вложенных JSON объектов:
dynamic evtPc1 = JsonConvert.DeserializeObject(json);
PropertyInfo[] properties = evtPc1.GetType().GetProperties();
for (int i = 0; i < properties.Length; i++)
{
var prop = properties[i];
if (prop.Name == nameof(JToken.First) && prop.PropertyType.Name == nameof(JToken))
{
var token = (JToken) prop.GetValue(evtPc1);
while (token != null)
{
if (token is JProperty castProp)
Console.WriteLine($"Property: {castProp.Name}; Value: {castProp.Value}");
token = token.Next;
}
}
}