使用JSON.NET反序列化 - 所有成员都设置为默认值

时间:2013-05-30 14:43:43

标签: c# json.net deserialization

我有以下JSON:

{
"Texture": "Sprites\\wall.png",
"Rect": null,
"Rotation": 0,
"Hitbox": [-25, -25, 50, 50],
"PositionChange": [0, 0]
}

我正在尝试反序列化到这个类:

class SimpleEntityFrame
{
    [JsonConverter(typeof(TextureConverter))]
    public Texture Texture { get; private set; }

    [JsonConverter(typeof(IntRectConverter))]
    public IntRect? Rect { get; private set; }

    public float Rotation { get; private set; }

    [JsonConverter(typeof(FloatRectConverter))]
    public FloatRect? Hitbox { get; private set; }

    [JsonConverter(typeof(Vector2fConverter))]
    public Vector2f PositionChange { get; private set; }
}

像这样:

var simpleEntityFrames = JsonConvert.DeserializeObject<SimpleEntityFrame>(File.ReadAllText("Data\\SimpleEntities.json"));

但是,当我这样做时,我将返回一个处于默认状态的SimpleEntityFrame - 所有引用成员都设置为null,所有值成员都为零。我知道CustomCreationConverters我正在使用工作正常,因为我使用它们反序列化到另一个类。我知道我可以通过为SimpleEntityFrame类创建CustomCreationConverter来解决这个问题,但我不明白为什么在这种情况下这应该是必要的。我错过了什么?

0 个答案:

没有答案