C#JsonConvert.DeserializeObject <dynamic>返回一个空对象

时间:2019-10-22 19:27:56

标签: c# json-deserialization jsonconvert

希望您能帮助我。我正在尝试将响应对象反序列化为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 :(得分:0)

如果使用的是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"]);
}

答案 1 :(得分:0)

尝试以下

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

    }
  var resultjson = JsonConvert.DeserializeObject<ListRecev>(result);
  foreach (var backgroundTaskURL in resultjson)
  {
   filaUPloads.Add(backgroundTaskURL.href);
  }