Как мне перечислить вложенные объекты JObject с помощью JSON.net?

У меня есть строковый объект json, который я анализирую с помощью JSObject.Parse и получаю результат ниже:

{{
   "payload": {
       "firstName": "John",
       "lastName": "Doe"
    }
}}

Это был мой вклад -

"{ \r\n\"payload\": {\r\n\t\"firstName\":\"John\", \r\n\t\"lastName\": \"Doe\"\r\n }}"

Дополнительные скобки - это начало и конец, добавленные анализатором. Я хочу перебрать этот объект и отобразить значение ключа для имени и фамилии.

foreach (var property in jobject)
{
    Console.WriteLine("  {0}: {1}", property.Name, property.Value);
}

Однако я не знаю, из-за двух скобок или из-за вложенной структуры я не могу добраться до свойств внутри. Я пробовал рекурсивный подход к синтаксическому анализу json, но пока не добился успеха. Может кто-нибудь помочь мне с этим?

2 ответа

Решение

Если вы хотите перебрать все вложенные объекты, вы можете сделать что-то вроде этого:

var p = JObject.Parse(...);
foreach (var a in p.DescendantsAndSelf())
{
    if (a is JObject obj)
        foreach (var prop in obj.Properties())
            if (!(prop.Value is JObject) && !(prop.Value is JArray))
                Console.WriteLine("  {0}: {1}", prop.Name, prop.Value);
}

Вы можете использовать LINQ для доступа к объекту. Если это не так, добавьте в вопрос часть объекта синтаксического анализа.

yourobj["payload"].ToObject<YourObject>()
Другие вопросы по тегам