C # JsonConvert.DeserializeObject <dynamic>возвращает нулевой объект - PullRequest
0 голосов
/ 22 октября 2019

Я надеюсь, что вы можете мне помочь. Я пытаюсь десериализовать объект ответа в динамический объект в C #. Код выглядит следующим образом:

var result = await message.Content.ReadAsStringAsync();
dynamic response = JsonConvert.DeserializeObject<dynamic>(result);

foreach (dynamic backgroundTaskURL in response)
{
    filaUPloads.Add(backgroundTaskURL.href);
}

Приведенный выше динамический объект ответа имеет следующее значение:

{{
    "href": "/me/background-tasks/77fa9922-5a1b-4fce-ada4-7c5c5d093270"
}}

При первом взаимодействии foreach динамический объект backgroundTaskURL читает:

{
    "href": "/me/background-tasks/77fa9922-5a1b-4fce-ada4-7c5c5d093270"
}

По какой-то причине я не могу понять, динамический объект backgroundTaskURL не разрешает свойство "href".

Пожалуйста, сообщите! Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Попробуйте следующее

 public class ListRecev
    {
        public string href { get; set; }

    }
  var resultjson = JsonConvert.DeserializeObject<ListRecev>(result);
  foreach (var backgroundTaskURL in resultjson)
  {
   filaUPloads.Add(backgroundTaskURL.href);
  }
0 голосов
/ 22 октября 2019

Если вы используете Newtonsoft.Json, вы можете вместо этого использовать JObject, который, как я считаю, является просто абстракцией, подобной JSON-карте, над динамическим объектом.

var result = await message.Content.ReadAsStringAsync();
dynamic response = JsonConvert.DeserializeObject<JObject>(result);

foreach (var backgroundTaskURL in response)
{
    filaUPloads.Add(backgroundTaskURL["href"]);
}
...