Как перебирать jproperties ключа jobject с помощью json.net

Как в JSON.net перебирать JProperties дочерних элементов ключа JObject?

Код:

JObject json = JObject.Parse(jsonstring);
var developments = json["Developments"][0];

//Doesn't work
//Error   CS1929  'JToken' does not contain a definition for 'Properties' and the best extension method overload 'Extensions.Properties(IEnumerable<JObject>)' requires a receiver of type 'IEnumerable<JObject>'
//foreach(JProperty property in development.Properties())
//    Console.WriteLine(property.Name + property.Value);

JSON:

{
  "Developments": {
    "Plot 125": {
      "developer": "XYZ",
      "selection":{
        "Subdivision 1" : "135000",
        "Subdivision 2":  "450000"
      }
    },
    "Plot 126":{
      "developer": "XYZ",
      "selection":{
        "Subdivision 1": "56000",
        "Subdivision 2": "98000",
        "Subdivision 3": "456000"
      }
    }
  }
}

Compiled with JSON.net 4.0 version 6.0.0

1
0
1 745
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все объекты JToken содержат свойства, которые позволяют вам работать с любым объектом, как если бы он был любым из допустимых типов json.

В частности, в json.net дочерними объектами объектов являются JProperty. Так что просто возьмите детей объекта.

var query =
    from x in json["Developments"].Children<JProperty>()
    select x.Name;

С другой стороны, если он уже набран как JObject, вы можете получить доступ к свойствам напрямую.

var query =
    from x in ((JObject)json["Developments"]).Properties()
    select x.Name;

Другие вопросы по теме