C#反序列化JSON返回null

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

我有一个JSON文件test.JSON,其值为:

{
    "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 );