C# 为什么JsonConvert.Deserialize()没有解析到它从中序列化的对象?
我只是在探索NewtonSoft-为什么这不起作用C# 为什么JsonConvert.Deserialize()没有解析到它从中序列化的对象?,c#,json,C#,Json,我只是在探索NewtonSoft-为什么这不起作用 var x = JsonConvert.SerializeObject(MethodThatProducesGameInstance()); var y = JsonConvert.DeserializeObject(x); Game g = (Game)y; // Error here 我无法将Game对象序列化为字符串,然后将字符串反序列化为Game对象-我认为这就是转换Json的全部意义?我错过了什么 我的游戏对象是这样的: publi
var x = JsonConvert.SerializeObject(MethodThatProducesGameInstance());
var y = JsonConvert.DeserializeObject(x);
Game g = (Game)y; // Error here
我无法将Game
对象序列化为字符串,然后将字符串反序列化为Game
对象-我认为这就是转换Json的全部意义?我错过了什么
我的游戏对象是这样的:
public class Game
{
public Game()
{
Moves = new HashSet<Move>();
GameHasPlayers = new HashSet<GameHasPlayer>();
}
public int Id { get; set; }
public DateTime DateCreated { get; set; }
[StringLength(1024)]
public string Comment { get; set; }
public virtual ICollection<Move> Moves { get; set; }
public virtual ICollection<GameHasPlayer> GameHasPlayers { get; set; }
}
调用
JsonConvert.DeserializeObject(x)没有泛型类型参数的code>将只将其反序列化为对象
基类,而基类不能转换为从它派生的类,因为它不是作为一个类创建的
相反,像这样传递方法a:JsonConvert.DeserializeObject(x)
显式告诉反序列化程序创建调用jsonvert.DeserializeObject(x)的Game
的实例没有泛型类型参数的code>将只将其反序列化为对象
基类,而基类不能转换为从它派生的类,因为它不是作为一个类创建的
相反,像这样传递方法a:JsonConvert.DeserializeObject(x)
明确告诉反序列化程序创建游戏
的实例游戏对象是什么样子的?并非每个对象都是可序列化的。这个Game
对象是什么?您是否尝试过显式地反序列化到Game对象而不是.net对象<代码>JsonConvert.DeserializeObject(x)代码>好的,游戏
对象中的大多数类型都可以序列化。什么是GameHasPlayer
和Move
?@Klaycon就是这么做的,我知道我的游戏对象对它来说并不太复杂,我只是认为我必须投射我的对象,但把它放在这里很好。你的游戏对象是什么样子的?不是每个对象都是可序列化的。这个Game
对象是什么?您是否尝试过显式地反序列化到Game对象而不是.net对象<代码>JsonConvert.DeserializeObject(x)代码>好的,游戏
对象中的大多数类型都可以序列化。什么是GameHasPlayer
和Move
?@Klaycon就是这么做的,我知道我的游戏对象对它来说不是太复杂,我只是想我必须投下我的对象,但把它放在这里很好。6分钟后接受!我不知道
符号是什么意思,调用这样的方法,但它的外观和行为与我想象的强制转换
是如何工作的,因此这正是我所需要的,并且工作得非常完美。如果您想了解
的含义以及它解决问题的原因,请随意阅读C#编程指南中关于泛型类型参数的部分。6分钟后即可接受!我不知道
符号是什么意思,但它看起来和行为就像我想象的Cast
是如何工作的,所以这正是我所需要的并且工作得很完美。如果您想了解
的含义以及它解决问题的原因,请随意阅读C#编程指南中关于泛型类型参数的部分。
"{\"Id\":3,\"DateCreated\":\"2019-11-13T14:31:54.303\",\"Comment\":\"First test game\",\"Moves\":[],\"GameHasPlayers\":[]}"