C# 如何使用c将JSON反序列化为派生类#

C# 如何使用c将JSON反序列化为派生类#,c#,json,odata,C#,Json,Odata,我正在尝试映射json响应 我有下面的json响应代码 string JSON = await SendGraphRequest("/users/", $"$filter=signInNames/any(x:x/value eq '{username}')", null, HttpMethod.Get); 这是json响应 { "extension_7182f7a071344106a9e47cc960ab93e8_DOB": null, "extension_7182f7a071344

我正在尝试映射json响应

我有下面的json响应代码

string JSON = await SendGraphRequest("/users/", $"$filter=signInNames/any(x:x/value eq '{username}')", null, HttpMethod.Get);
这是json响应

{
  "extension_7182f7a071344106a9e47cc960ab93e8_DOB": null,
  "extension_7182f7a071344106a9e47cc960ab93e8_middleName": null,
  "objectID": "",
  "accountEnabled": true,
  "email": Test
  }
我想使用下面的代码反序列化json响应

var graphUserRespModel =  JsonConvert.DeserializeObject<ResponseModelPrime>(JSON);

要反序列化json,您需要以一种简单的方式

public Form1()
        {
            InitializeComponent();

            try
            {

            var json = @"{
                          'extension_7182f7a071344106a9e47cc960ab93e8_DOB': '17/12/1995',
                          'extension_7182f7a071344106a9e47cc960ab93e8_middleName': 'Roger',
                          'objectID': '',
                          'accountEnabled': true,
                          'email': 'Test'
                         }";

                var items = JsonConvert.DeserializeObject<ResponseModelPrime>(json);

            }
            catch (Exception ex)
            {
                var exception = ex;
            }
        }
        public class ResponseModelPrime
        {           
            [JsonProperty(PropertyName = "odata.metadata")]
            public string OdataMetadata { get; set; }

            [JsonProperty(PropertyName = "objectId")]
            public string ObjectId { get; set; }

            [JsonProperty(PropertyName = "email")]
            public string Email { get; set; }

            [JsonProperty(PropertyName = "accountEnabled")]
            public bool AccountEnabled { get; set; }

            [JsonProperty(PropertyName = "DOB")]
            public string DOB { get; set; }

            [JsonProperty(PropertyName = "middleName")]
            public string middleName { get; set; }     

            [JsonProperty(PropertyName = "extension_7182f7a071344106a9e47cc960ab93e8_DOB")]
            public string extension_7182f7a071344106a9e47cc960ab93e8_DOB { get; set; }

            [JsonProperty(PropertyName = "extension_7182f7a071344106a9e47cc960ab93e8_middleName")]
            public string extension_7182f7a071344106a9e47cc960ab93e8_middleName { get; set; }        
        }
public Form1()
{
初始化组件();
尝试
{
var json=@”{
“扩展部分”——7182f7a071344106a9e47cc960ab93e8——DOB:“17/12/1995”,
“扩展名”-U 7182f7a071344106a9e47cc960ab93e8“中间名”:“收到”,
“objectID”:“,
“accountEnabled”:true,
“电子邮件”:“测试”
}";
var items=JsonConvert.DeserializeObject(json);
}
捕获(例外情况除外)
{
var异常=ex;
}
}
公共类响应模型
{           
[JsonProperty(PropertyName=“odata.metadata”)]
公共字符串OdataMetadata{get;set;}
[JsonProperty(PropertyName=“objectId”)]
公共字符串ObjectId{get;set;}
[JsonProperty(PropertyName=“email”)]
公共字符串电子邮件{get;set;}
[JsonProperty(PropertyName=“accountEnabled”)]
public bool AccountEnabled{get;set;}
[JsonProperty(PropertyName=“DOB”)]
公共字符串DOB{get;set;}
[JsonProperty(PropertyName=“middleName”)]
公共字符串middleName{get;set;}
[JsonProperty(PropertyName=“extension-u 7182f7a071344106a9e47cc960ab93e8_-DOB”)]
公共字符串扩展名--U 7182f7a071344106a9e47cc960ab93e8--U DOB{get;set;}
[JsonProperty(PropertyName=“extension”\u 7182f7a071344106a9e47cc960ab93e8\u middleName”)]
公共字符串扩展名--U 7182f7a071344106a9e47cc960ab93e8--U middleName{get;set;}
}

添加您反序列化的有问题的json。您已经展示了获取json的代码,而不是json本身。为什么不使用OData的客户端库?您正在尝试将包含架构和对象的内容反序列化到无法处理此内容的类。即使修改类以使代码正常工作,元数据仍然会丢失。事实上,OData相对于原始JSON的优势在于,您可以轻松地基于元数据生成客户机类。您还可以使用LINQ仅检索所需的字段。@PanagiotisKanavos所以我必须做什么
public Form1()
        {
            InitializeComponent();

            try
            {

            var json = @"{
                          'extension_7182f7a071344106a9e47cc960ab93e8_DOB': '17/12/1995',
                          'extension_7182f7a071344106a9e47cc960ab93e8_middleName': 'Roger',
                          'objectID': '',
                          'accountEnabled': true,
                          'email': 'Test'
                         }";

                var items = JsonConvert.DeserializeObject<ResponseModelPrime>(json);

            }
            catch (Exception ex)
            {
                var exception = ex;
            }
        }
        public class ResponseModelPrime
        {           
            [JsonProperty(PropertyName = "odata.metadata")]
            public string OdataMetadata { get; set; }

            [JsonProperty(PropertyName = "objectId")]
            public string ObjectId { get; set; }

            [JsonProperty(PropertyName = "email")]
            public string Email { get; set; }

            [JsonProperty(PropertyName = "accountEnabled")]
            public bool AccountEnabled { get; set; }

            [JsonProperty(PropertyName = "DOB")]
            public string DOB { get; set; }

            [JsonProperty(PropertyName = "middleName")]
            public string middleName { get; set; }     

            [JsonProperty(PropertyName = "extension_7182f7a071344106a9e47cc960ab93e8_DOB")]
            public string extension_7182f7a071344106a9e47cc960ab93e8_DOB { get; set; }

            [JsonProperty(PropertyName = "extension_7182f7a071344106a9e47cc960ab93e8_middleName")]
            public string extension_7182f7a071344106a9e47cc960ab93e8_middleName { get; set; }        
        }