【发布时间】:2022-01-14 05:26:16
【问题描述】:
我有一个程序需要接收一个 JSON 对象,该对象包含一个带有对象列表的对象以及列表中每个对象内的一个对象。
访问“OuterGameResponse”中的对象没有问题,但用户名为空。我访问高分 lige 这个:
string json = @"{""Games"":[{""Highscore"":35,""Coinsgained"":35,""Starttime"":""2021-12-08T12:30:50.543766"",""User"":{""Username"":""Smorgaard""}},{""Highscore"":35,""Coinsgained"":0,""Starttime"":""2021-12-08T13:09:00.384853"",""User"":{""Username"":""Smorgaard""}},{""Highscore"":25,""Coinsgained"":25,""Starttime"":""2021-12-08T11:14:16.125606"",""User"":{""Username"":""Smorgaard""}},{""Highscore"":10,""Coinsgained"":10,""Starttime"":""2021-12-08T12:49:28.987071"",""User"":{""Username"":""Smorgaard""}},{""Highscore"":0,""Coinsgained"":0,""Starttime"":""2021-12-08T12:48:57.309838"",""User"":{""Username"":""Smorgaard""}}],""Message"":""OK"",""Code"":200}";
GamesResponse _gr = JsonConvert.DeserializeObject<GamesResponse>(json);
Console.WriteLine(_gr.Games[0].Highscore);
但不能这样做:
Console.WriteLine(_gr.Games[0].User.Username);
有没有办法做到这一点,而列表中的对象不为空?
下面是我想将 JSON 反序列化成的类。
[Serializable]
public class GamesResponse
{
public List<OuterGamesResponse> Games;
public string Message;
public int Code;
}
[Serializable]
public class OuterGamesResponse
{
public int Coinsgained;
public int Highscore;
public DateTime Starttime;
public InnerGamesResponse User;
}
[Serializable]
public class InnerGamesResponse
{
public string Username;
}
【问题讨论】:
-
在 LINQPad 中测试,用户名属性已正确填充。问题中的代码是您的实际代码吗?
-
@LasseV.Karlsen 用户名字段.
-
它仍然被正确填充。我复制并粘贴了问题中的代码,我得到了一个用该 console.writeline 语句编写的用户名,我可以看到所有字段都已填充。
-
是的,但在讨论基于反射的 API 时,区别是相关的。
标签: c# json visual-studio json.net