C#反序列化JSON返回null
我有一个JSON文件test.JSON,其值为:C#反序列化JSON返回null,c#,json,C#,Json,我有一个JSON文件test.JSON,其值为: { "version": "13.5.3", "mas": {"users": [ { "id": 1, "name": "John", "password": "123", "role" : "client" } ]}, "jsonDataFile": { "created": "2020-02-29T15:0
{
"version": "13.5.3",
"mas": {"users": [
{
"id": 1,
"name": "John",
"password": "123",
"role" : "client"
}
]},
"jsonDataFile": {
"created": "2020-02-29T15:05:22+0000",
"usersCount": 1
}
}
拥有此类文件:
public class User
{
public int id { get; set; }
public string name { get; set; }
public string password { get; set; }
public string role { get; set; }
}
public class Mas
{
public List<User> users { get; set; }
}
public class JsonDataFile
{
public DateTime created { get; set; }
public int usersCount { get; set; }
}
public class RootObject
{
public string version { get; set; }
public Mas mas { get; set; }
public JsonDataFile jsonDataFile { get; set; }
}
公共类用户
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共字符串密码{get;set;}
公共字符串角色{get;set;}
}
公共类Mas
{
公共列表用户{get;set;}
}
公共类JsonDataFile
{
已创建公共日期时间{get;set;}
public int userscont{get;set;}
}
公共类根对象
{
公共字符串版本{get;set;}
公共Mas{get;set;}
公共JsonDataFile JsonDataFile{get;set;}
}
以及这个Program.cs文件:
string fileName = @"somepath\test.json";
Mas mas = JsonConvert.DeserializeObject<Mas>(File.ReadAllText(fileName));
foreach (var item in mas.users)
{
Console.WriteLine(item.name);
}
stringfilename=@“somepath\test.json”;
Mas=JsonConvert.DeserializeObject(File.ReadAllText(fileName));
foreach(mas.users中的var项)
{
Console.WriteLine(项目名称);
}
当我启动程序时,它返回我desrealize.Mas.users.get返回null
但使用“version”和“jsonDataFile”的相同json文件效果良好。哪里出错了?您需要使用RootObject作为类型参数进行反序列化:
var result = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(fileName));
您需要反序列化到RootObject类似
RootObject result = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(fileName));
Mas mas = result.mas;
RootObject result=JsonConvert.DeserializeObject(File.ReadAllText(fileName));
Mas=result.Mas;
您可以尝试以下代码
String fileString File.ReadAllText(@"test.json");
JObject ex = JObject.Parse(fileString);
Mas mas = JsonConvert.DeserializeObject<Mas>(ex["mas"].ToString());
stringfilestringfile.ReadAllText(@“test.json”);
JObject ex=JObject.Parse(fileString);
Mas Mas=JsonConvert.DeserializeObject(例如[“Mas”].ToString());
如果你想要整个根对象
RootObject root = JsonConvert.DeserializeObject<RootObject>(fileString );
rootobjectroot=JsonConvert.DeserializeObject(fileString);
是。我忘了RootObject。谢谢很多人都给出了相同的答案,但我很高兴能有所帮助:)@AskAlexandria
RootObject root = JsonConvert.DeserializeObject<RootObject>(fileString );