Newtonsoft.Json.Linq.JProperty не содержит определения имени - PullRequest
0 голосов
/ 25 сентября 2019

Я извлекаю данные из следующего JSON

string strResponse =
@"[
    {
        'forename': 'Harry',
        'surname': 'Potter',
        'house': 'Gryffindor'
    },
    {
        'forename': 'Draco',
        'surname': 'Malfoy',
        'house': 'Slytherin'
    },
    {
        'forename': 'Luna',
        'surname': 'Lovegood',
        'house': 'Ravenclaw'
    }
]";

Я использую C # следующим образом:

dynamic dynJson = JsonConvert.DeserializeObject(strResponse);
foreach (var item in dynJson)
{
    string output = string.Format("{0} {1} {2}", item.forename, item.surname, item.house);
    Console.WriteLine(output);
}

Это работает нормально, и результат получается ожидаемым.

Однако, когда JSON имеет слегка другой формат, например:

string strResponse =
@"{
    'People': [
    {
        'forename': 'Harry',
        'surname': 'Potter',
        'house': 'Gryffindor'
    },
    {
        'forename': 'Draco',
        'surname': 'Malfoy',
        'house': 'Slytherin'
    },
    {
        'forename': 'Luna',
        'surname': 'Lovegood',
        'house': 'Ravenclaw'
    }
    ]
}";

, появляется следующее сообщение об ошибке:

Необработанное исключение типа 'MicrosoftСобытиеЯ знаю, что это связано со структурой новой строки JSON и, в частности, с разделом People.Но я не знаю, как адаптировать мой код для этого, пожалуйста, помогите.

1 Ответ

1 голос
/ 25 сентября 2019

Вот вам рабочий пример.В следующий раз, пожалуйста, прочитайте документацию.

JObject dynJson = JsonConvert.DeserializeObject(strResponse) as JObject;
dynJson.Dump();
foreach (var item in dynJson["People"])
{
    string output = string.Format("{0} {1} {2}", item["forename"], item["surname"], item["house"]);
    Console.WriteLine(output);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...