c# - Json.NET 不尊重 PreserveReferencesHandling 反序列化
问题描述
我有一个我正在尝试反序列化的团队列表。
class Team
{
public string TeamName {get; set;};
private List<FootballPlayer> _fPlayers = new List<FootballPlayer>();
public List<FootballPlayer> FPlayers
{
get => _fPlaters;
}
}
class FootballPlayer
{
private Team _team;
public string Name { get; set; }
public Team Team
{
get => _team;
}
[JsonConstructor]
public FootballPlayer(Team team)
{
_team = team;
}
}
我有以下 JSON 设置:
JsonSerializerSettings serializerSettings = new JsonSerializerSettings()
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
Formatting = Formatting.Indented
};
当我查看序列化输出时,它看起来是正确的,并且节点之间的引用被正确表示。
{
"$id": "1",
"TeamName": "Test",
"FPlayers": [
{
"$id": "2",
"Team": {
"$ref": "1"
},
"Name": "Leo Messi"
}
]
}
当数据反序列化时,玩家“Leo Messi”中的属性“Team”为空。
如何以“Leo Messi”的属性“Team”不为空的方式反序列化此 JSON?
JsonConvert.DeserializeObject<List<Team>>(JsonString, serializerSettings);
解决方案
推荐阅读
- python - 如何在 VS 代码中将模块导入到我的文件中,而它们都在同一个文件夹中?
- html - html:更改位置后输入不可点击
- c# - 有没有办法让循环代码变得更快?
- python - 什么时候需要改组数据,为什么在这里使用 padded_batch?
- dart - List中的[]和elementAt有什么区别?
- google-sheets - Google表格中的公式问题
- go - 调用 cancelFunc() 时(多快)取消 golang 子函数?
- wso2 - WSO2 Enterprise Integrator - 如何将数据库与 wso2 连接?
- django - 使用 IF 条件时如何在 django 的单个查询中进行数据库更新?
- javascript - 需要 javascript 来验证服务器是否已启动并在未启动时防止页面丢失