C# 为什么JsonConvert.Deserialize()没有解析到它从中序列化的对象?

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

我只是在探索NewtonSoft-为什么这不起作用

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)将只将其反序列化为
对象
基类,而基类不能转换为从它派生的类,因为它不是作为一个类创建的


相反,像这样传递方法a:
JsonConvert.DeserializeObject(x)
显式告诉反序列化程序创建调用
jsonvert.DeserializeObject(x)的
Game
的实例将只将其反序列化为
对象
基类,而基类不能转换为从它派生的类,因为它不是作为一个类创建的


相反,像这样传递方法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\":[]}"