[英]C# Deserialize JSON returns null
我有一個帶有值的 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; }
}
這個 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);
}
當我啟動程序時 - 它返回我 deserealize.Mas.users.get 返回 null。
但是沒有“版本”和“jsonDataFile”的相同json文件效果很好。 我在哪里做錯了?
您需要使用 RootObject 作為類型參數進行反序列化:
var result = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(fileName));
現在獲取您想要的數據:
Mas mas = result.Mas;
您需要反序列化為RootObject 之類的,
RootObject result = JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(fileName));
Mas mas = result.mas;
你可以試試下面的代碼
String fileString File.ReadAllText(@"test.json");
JObject ex = JObject.Parse(fileString);
Mas mas = JsonConvert.DeserializeObject<Mas>(ex["mas"].ToString());
如果你想要整個 Root 對象
RootObject root = JsonConvert.DeserializeObject<RootObject>(fileString );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.