c#JSONConvert.DeserializeObject<;列表<;RootObject>&燃气轮机;返回空值
我试图将HTTPWebRequest响应(Json)反序列化为c#对象/类,但遇到了问题。返回一个包含10个对象实例的集合,所有对象都为空 以下是json:c#JSONConvert.DeserializeObject<;列表<;RootObject>&燃气轮机;返回空值,c#,json.net,generic-collections,C#,Json.net,Generic Collections,我试图将HTTPWebRequest响应(Json)反序列化为c#对象/类,但遇到了问题。返回一个包含10个对象实例的集合,所有对象都为空 以下是json: [ { "id":2227, "user_id":441, "grades": {"html_url":"https://...", "current_score":91.26, "current_grade":null, }, "sis_account_id":"11", "user": {"id"
[
{
"id":2227,
"user_id":441,
"grades":
{"html_url":"https://...",
"current_score":91.26,
"current_grade":null,
},
"sis_account_id":"11",
"user":
{"id":441,
"name":"Nicholas Bailey",
}
},
以下是课程:
public class Grade
{
public string html_url { get; set; }
public decimal current_score { get; set; }
public string current_grade { get; set; }
}
public class User
{
public int id { get; set; }
public string name { get; set; }
}
public class Enrollment
{
public int id { get; set; }
public int user_id { get; set; }
public Grade grades { get; set; }
public string sis_account_id { get; set; }
public User user { get; set; }
}
public class RootObject
{
public Enrollment enrollment { get; set; }
}
这是我的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://(some uri)");
WebResponse response = request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
string content = sr.ReadToEnd();
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore;
var outObject = JsonConvert.DeserializeObject<List<RootObject>>(content, settings);
HttpWebRequest-request=(HttpWebRequest)WebRequest.Create(“https://(某些uri)”);
WebResponse=request.GetResponse();
StreamReader sr=新的StreamReader(response.GetResponseStream());
字符串内容=sr.ReadToEnd();
JsonSerializerSettings设置=新建JsonSerializerSettings();
settings.MetadataPropertyHandling=MetadataPropertyHandling.Ignore;
var outObject=JsonConvert.DeserializeObject(内容、设置);
我已经在谷歌上查看了很多代码,但还没有找到一个与我类似的情况。另外,我对一般的收藏有点生疏。代码运行正常,但在调试器中“outObject”包含10个条目,每个条目的“Enrollment”对象为null
我也尝试过json,它有超过10个条目,但仍然有10个条目。但我现在更关注空值(一次只做一件事!)。为了简洁起见,我删除了json中的几个条目,但是主模式(包含grades对象和用户对象的注册对象)仍然保留
任何帮助都将不胜感激。谢谢 反序列化到列表
非列表
:
var enrollment = JsonConvert.DeserializeObject<List<Enrollment>>(content, settings);
将此更改为可为空:
public int? associated_user_id;
您是否已将“Serializable”属性添加到所有类中?@AkshayMahajan Json.NET不依赖于
Serializable
属性Serializable
影响二进制序列化。为了好玩,只需将序列化为动态并删除数据存储库,就可以修复它!你知道为什么调试器只列出了10个对象,而不是13个(总共是13个)?@PeteHesse-对不起,这不是我想的。你可能想。如果回答了这个问题,请回答。
public int? associated_user_id;