Как получить корневое имя JObject

#c# #json.net

Вопрос:

Я не могу поверить, что это так сложно, но не нашел простого решения!

У меня есть объект работы, представляющий JSON, такой как

 "MyData1": {
  "Data": "foo"
}
 

Мне нужно имя корневого элемента (=Ключ) в объекте задания, но мне не нравится повторять, как это предлагается в других ответах, подобных этому:

 var jsonObject = JObject.Parse(jsonString);
foreach (var tmp in jsonObject) 
{
    Console.WriteLine(tmp.Key);
}
 

Эта конструкция foreach дает мне пару значений ключа, которая обладает свойством ключа.
Как я могу получить это только для самого первого элемента в моем рабочем задании?

(Единственный обходной путь, который я нашел, — это использование System.Xml.Linq.XDocument вместо JObject — это обеспечивает корневой каталог.Свойство имени.)

Комментарии:

1. Перерыв после первой итерации

2. Да, я тоже рассматривал это — но должно быть более элегантное решение!?

3. ((JProperty)JSONObject[0]).Имя

4. Вот и все! Спасибо!

5. Да, конечно — я бы просто сделал это немного безопаснее, например: rootName = JSONObject. Количество > 0 ? (JSONObject[0] как свойство JProperty)?. Имя : null;

Ответ №1:

Используйте приведенный ниже код, чтобы получить первый ключ, пожалуйста, убедитесь, что ваш объект не является нулевым и содержит хотя бы один элемент

 ((JProperty)jsonObject[0]).Name